1.添加jar包 html
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.5</version> </dependency>
2.发送代码java
public class EmailUtils { /** * https://www.cnblogs.com/jimboi/p/6406237.html * 纯文本内容邮件 */ public static void sendEmail(String emailSender,String emailSenderPassword,String subject,String emailReceiver,String content) throws EmailException { Email email = new SimpleEmail(); email.setHostName("smtp.qq.com"); //密码是腾讯生成的第三方验证码 ascxdfbgztavbdlab email.setAuthentication(emailSender,emailSenderPassword); email.setFrom(emailSender); email.addTo(emailReceiver); email.setSubject(subject); //恭喜您注册自媒体号审核经过了,点击以下连接登陆: <a href="http://www.baidu.com">xx电视台自媒体登陆平台</a> email.setContent(content,"text/html;charset=UTF-8"); email.send(); }
3.测试代码
apache
public static void main(String[] args) { try { EmailUtils.sendEmail("123456@qq.com","ascxdfbgztavblab","审核经过","654321@qq.com","恭喜您注册自媒体号审核经过了,点击以下连接登陆: <a href=\"http://baidu,com">xx电视台自媒体登陆平台</a>"); } catch (EmailException e) { e.printStackTrace(); } }
4.如上去25端口发送邮件,在本地测试能够经过。当打到线上环境时,发现报错了。 服务器
后来经排查发现,咱们用的线上环境是阿里云,阿里云将 25端口封闭了。继续查找资料,发现腾讯邮箱支持465端口,须要设置ssl。很少说,代码以下。 session
public class EmailUtils { /** * https://www.cnblogs.com/jimboi/p/6406237.html * https://www.cnblogs.com/15ho/p/5891148.html * 纯文本内容邮件 */ public static void sendEmail(EmailVO emailVO) throws EmailException, MessagingException { //设置ssl链接 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; Properties props = System.getProperties(); props.setProperty("mail.smtp.host", "smtp.qq.com"); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); props.setProperty("mail.smtp.auth", "true"); //创建邮件会话 Session session = Session.getInstance(props, new Authenticator() { //身份认证 protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(emailVO.getEmailSender(),emailVO.getEmailSenderPassword()); } }); //创建邮件对象 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(emailVO.getEmailSender())); message.setRecipients(Message.RecipientType.TO, emailVO.getEmailReceiver()); message.setSubject(emailVO.getSubject()); message.setContent(emailVO.getContent(),"text/html;charset=UTF-8"); //发送邮件 Transport.send(message); } }
注意:如上邮箱服务器是采用腾讯的。因此发件人必须是腾讯的邮箱。 socket
ps:今天遇到个问题,我用的腾讯的邮箱服务器,帐号+受权码采用 网易的,发送邮件始终报535:认证失败。后来才知道邮箱服务器认证只能认证本身家的帐号。ide