利用Java发送邮件的实现代码

网友投稿 189 2023-07-07


利用Java发送邮件的实现代码

前言

大家请注意:以下代码使用的测试邮箱为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("mailojtvKsG.smtp.auth", "true"); // 设置smtp服务器要身份验证。

props.put("mail.thttp://ransport.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(

"

content+"

"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的错误码代表的意思。这种情况一般就是被判定为垃圾邮件了。

其次,测试时不要频繁运行(发送)上述代码中的邮件,太频繁了,也容易判定为垃圾邮件。好了,以上就是这篇文章的全部内容了,希望对大家的学习和工作能有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Session的国际化实现方法
下一篇:Convert WebP to PNG using java
相关文章

 发表评论

暂时没有评论,来抢沙发吧~