zoukankan      html  css  js  c++  java
  • Java发送邮件

    • 所需资源
      1. JavaMail API jar包
      2. mail.properties
        文件:
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Date;
    import java.util.Properties;
    
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.Message.RecipientType;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    public class MailUtils {
    	private static Session session = null;
    
    	private static String myEmailAccount;
    	private static String myEmailPassword;
    	private static String myEmailSMTPHost;
    
    	private MailUtils(){
    		
    	}
    	
    	private static Session getSession() throws IOException {
    		if (session == null) {
    			// 读取配置信息
    			Properties prop = new Properties();
    			InputStream ins = new BufferedInputStream(new FileInputStream("src/mail.properties"));
    			// InputStream ins =
    			// this.getClass().getResourceAsStream("/mail.properties");
    			prop.load(ins);
    			myEmailAccount = prop.getProperty("myEmailAccount");
    			myEmailPassword = prop.getProperty("myEmailPassword");
    			myEmailSMTPHost = prop.getProperty("myEmailSMTPHost");
    
    			// 1.创建连接对象,连接到邮件服务器
    			Properties props = new Properties();
    			// props.setProperty("host", value);
    			props.setProperty("mail.transport.protocol", "smtp");
    			props.setProperty("mail.smtp.host", myEmailSMTPHost);
    			props.setProperty("mail.smtp.auth", "true");
    
    			session = Session.getInstance(props, new Authenticator() {
    				@Override
    				protected PasswordAuthentication getPasswordAuthentication() {
    					// 发送帐号
    					return new PasswordAuthentication(myEmailAccount, myEmailPassword);
    				}
    			});
    		}
    		return session;
    	}
    
    	/**
    	 * 根据配置文件发送邮件的方法
    	 * 
    	 * @param toAddress
    	 *            :收件人地址
    	 * @param code
    	 *            :激活码
    	 * @throws IOException
    	 * @throws MessagingException
    	 * @throws AddressException
    	 * @throws Exception
    	 */
    	public static void sendMailByNet2(String toAddress, String subject, String content)
    			throws IOException, AddressException, MessagingException {
    		Session session = getSession();
    		session.setDebug(true);
    
    		// 2.创建邮件对象
    		Message message = new MimeMessage(session);
    
    		// 2.1设置发件人
    		message.setFrom(new InternetAddress(myEmailAccount));
    		// 2.2设置收件人
    		message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
    		// 2.3设置邮件主题
    		message.setSubject(subject);
    		// 2.4设置邮件的正文
    		message.setContent(content, "text/html;charset=UTF-8");
    		message.setSentDate(new Date());
    		message.saveChanges();
    
    		// 3.发送激活邮件
    		 Transport.send(message);
    
    		/*Transport transport = session.getTransport();
    		transport.connect(myEmailAccount, myEmailPassword);
    		transport.sendMessage(message, message.getAllRecipients());
    		transport.close();
    */
    	}
    
    	public static void main(String[] args) {
    		long startTime = System.currentTimeMillis();
    
    		try {
    			sendMailByNet2("bigzxxxx@qq.com", "测试邮件1", "Hello");
    		} catch (AddressException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (MessagingException e) {
    			e.printStackTrace();
    		}
    		long endTime = System.currentTimeMillis();
    
    		System.out.println(endTime - startTime + "ms");
    	}
    }
    
    
    #mail.properties
    mail.transport.protocol=smtp
    myEmailSMTPHost=smtp.163.com
    myEmailAccount=xxxx@163.com
    myEmailPassword=xxx
    #password可能不是网页邮箱的登录密码,注意查看,一般QQ需要设置第三方的授权登录密码,此处填写第三方的授权登录密码
    
  • 相关阅读:
    Unix系统编程(四)creat系统调用
    Unix系统编程(三)通用的I/O
    Unix系统编程(二)open的练习
    FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
    Linux上的ftp服务器 vsftpd 之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传
    intelj idea编译项目报错,Error:ajc: The method getDestHost() is undefined
    oracle索引优化
    wireshark 表达式备忘录
    rabbitmq日志记录进出的每条消息
    powerDesigner根据sql脚本来逆向生成pdm等模型
  • 原文地址:https://www.cnblogs.com/bigorang/p/10406057.html
Copyright © 2011-2022 走看看