前言
大家请注意:以下代码使用的测试邮箱为126的邮箱,实测可用,注意,个人测试时,注意发送的邮件内容,邮件内容邮箱服务器审查较严格,少有不慎就会被判定为垃圾邮件,进而就会给你返回一个错误码:
实例代码
import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class SendMailUtil { private static final String USERNAME = "用户名"; // 发送人的用户名 private static final String PASSWORD = "密码"; // 发送邮件人的密码 private static final String HOSTNAME = "smtp.126.com"; // smtp服务器地址 private static final String FROMADDRESS = USERNAME + "@126.com"; // 发件人邮箱 private static final String FROMUSERNAME = "CNCD-码上中国博客"; // 发件人姓名,可随意写 private static final String EMAILTITLE = "码上中国博客"; // 邮件标题 private static final String EMAILCONTENT = "欢迎使用 CNCD-码上中国博客激活邮件 ,请点击右侧链接完成账号激活:\n";// 邮件内容 public static void main(String[] args) { try { sendEmail("825338623@qq.com", "用户名:guopengfei,密码:guopengfei"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 发送邮件 * @param sendAddress 要发送的邮箱地址 * @param content 发送的内容 * @throws Exception */ public static void sendEmail(String sendAddress, String content) throws Exception { // 创建一个连接属性。 Properties props = new Properties(); // props.put("mail.smtp.host ", HOSTNAME); // 设置smtp的服务器地址是smtp.126.com props.put("mail.smtp.auth", "true"); // 设置smtp服务器要身份验证。 props.put("mail.transport.protocol", "stmp"); Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USERNAME, PASSWORD); } }); Message message = new MimeMessage(session); InternetAddress from = new InternetAddress(FROMADDRESS); // 发送人地址 from.setPersonal(MimeUtility.encodeText(FROMUSERNAME)); // 发件人名 message.setFrom(from); // InternetAddress to = new InternetAddress("taozhida11@sina.cn"); // //收件人地址 // 创建邮件体: message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(sendAddress));// 抄送给多个人的邮箱 // message.setRecipient(Message.RecipientType.TO, to); // 只有抄送给自己的邮箱 message.setSubject(MimeUtility.encodeText(EMAILTITLE)); // 邮件标题 message.setSentDate(new Date()); MimeMultipart msgMultipart = new MimeMultipart("mixed");// 指定为混合关系 message.setContent(msgMultipart); // 邮件内容 MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent( "<body><div style='width: 1000px;height: 300px;margin: 0px auto;margin-bottom:20px;border:1px solid #92B0DD;background-color: #FFFFFf;'><h3>这是系统自动发送的邮件,请勿回复!</h3><br/>"+ content+"</div></body>", "text/html;charset=UTF-8"); // TODO 组装的顺序非常重要,一定要先组装文本域,再组装文件 msgMultipart.addBodyPart(htmlPart); // 组装附件 // MimeBodyPart file = new MimeBodyPart(); // FileDataSource file_datasource = new FileDataSource( // "D:\\report_data2.txt"); // DataHandler dh = new DataHandler(file_datasource); // file.setDataHandler(dh); // // 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码 // file.setFileName(MimeUtility.encodeText(dh.getName())); // msgMultipart.addBodyPart(file); message.saveChanges(); // 发送邮件的过程:95188 Transport transport = session.getTransport("smtp"); // 创建连接 transport.connect(HOSTNAME, 25, USERNAME, PASSWORD); // 连接服务器 // 服务名,端口,发送邮件用户名 // (不要@后面),密码 transport.sendMessage(message, message.getAllRecipients()); // 发送信息 transport.close(); // 关闭 System.out.println("发送完毕"); } }
注意,首次使用本代码的朋友们,建议除了用户名和密码换成自己的,其余的最好先不要改,否则很容易被网易邮箱判定为垃圾邮件而不给发送,一般判定为垃圾邮件时,网易返回的错误码如下:
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 126 smtp2,DMmowACXoTzMk8VXVdKnEA--.1778S2 1472566222,please see http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.13&hostid=smtp2&time=1472566222 at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829) at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1634) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:889) at SendMailUtil.sendEmail(SendMailUtil.java:88) at SendMailUtil.main(SendMailUtil.java:29)
意思是说,让你前往错误返回码中的链接里查看帮助信息,你可以进入链接,发现,就有上述554的错误码代表的意思。这种情况一般就是被判定为垃圾邮件了。
其次,测试时不要频繁运行(发送)上述代码中的邮件,太频繁了,也容易判定为垃圾邮件。好了,以上就是这篇文章的全部内容了,希望对大家的学习和工作能有所帮助。
本文向大家介绍利用.net代码实现发送邮件,包括了利用.net代码实现发送邮件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了.net发送邮件的实现代码,供大家参考,具体内容如下 关键代码: 需要引用命名空间: using System.Net.Mail; using System.Net; 注意细节: 一、smtp SMTP(Simple Mail Transfer Protoco
本文向大家介绍Spring Boot利用Java Mail实现邮件发送,包括了Spring Boot利用Java Mail实现邮件发送的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Spring Boot利用Java Mail实现邮件发送的具体代码,供大家参考,具体内容如下 实现邮件发送的方法有很多,这里只是简单记录一个demo实现 1. 引入maven依赖 2. 配置邮箱bean信
本文向大家介绍java邮件发送的实现,包括了java邮件发送的实现的使用技巧和注意事项,需要的朋友参考一下 邮件是在日常生活中,这篇文章主要介绍了java实现基于SMTP发送邮件的方法,实例分析了java基于SMTP服务发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 1.写一个 MailSendProper 类封装需要的属性 2、写一个 EmailMessage 封装 发送信息
本文向大家介绍Python利用QQ邮箱发送邮件的实现方法(分享),包括了Python利用QQ邮箱发送邮件的实现方法(分享)的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码 Python2.7 Python3.6 以上这篇Python利用QQ邮箱发送邮件的实现方法(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍laravel邮件发送的实现代码示例,包括了laravel邮件发送的实现代码示例的使用技巧和注意事项,需要的朋友参考一下 laravel自带SwiftMailer库,集成了多种邮件API,可以很方便的实现邮件的发送。在本教程中使用到的是SMTP(Simple Message Transfer Protocol)简单邮件传输协议,通常理解为邮件发送服务器。 以126邮箱为例 使用126
本文向大家介绍Java实现简单邮件发送,包括了Java实现简单邮件发送的使用技巧和注意事项,需要的朋友参考一下 JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。 Java邮件发送的大致过程是这样的: 1、构建一个继承自