您的位置:首页 > 编程语言 > Java开发

JavaMail发送邮件的笔记及Demo

2016-01-22 14:18 543 查看
  最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误:



网络上搜索解决方式,多次尝试后发现了问题,原来是我的163邮箱账号没有开启客户端授权,因此也就没有开启SMTP服务,这是无法用javamail程序作为发件人发送邮箱的,于是在设置里开始授权及服务之后,满心欢喜的再次运行,悲哀的是又报了另一个错误:



无奈再次开始调试,最后终于发现了问题,正如网友说的,因为你验证的邮箱用户名和你发送的时候添写的邮箱地址不一样,SMTP服务器驳回了你的请求,我在验证的时候使用的我自己的163邮箱,在设置发信人的时候,误把xxxxxx@163.com写成了xxxxxxx@qq.com(不能忍),改正过来以后,如愿以偿,终于可以发送邮件了,以下是代码和注释:

/**
* javamail发邮件
* @throws Exception
* @throws AddressException
*/
@Test
public void sendMailDemo() throws Exception{

/**
* 1.得到session
*/

// Properties是Session的属性对象,用于封装针对SMTP的一些常用属性
Properties props=new Properties();
//设置smtp服务器地址
props.setProperty("mail.host", "smtp.163.com");
//设置SMTP服务器是否需要用户认证,默认为false,设为true
props.setProperty("mail.smtp.auth", "true");

Authenticator auth=new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
        //注意:下面的登录用户名是@前边的内容,如果你的账号是haha@163.com,只需要输入haha
return new PasswordAuthentication("邮件服务器登录用户名", "登录密码");
}
};

Session session = Session.getInstance(props,auth);
/**
* 2.创建MimeMessage
*/
MimeMessage msg=new MimeMessage(session);

//设置发件人
msg.setFrom(new InternetAddress("发送方邮箱账号"));
//设置收件人
msg.setRecipients(RecipientType.TO,"接受方邮箱账号");
//设置抄送
msg.setRecipients(RecipientType.CC,"邮箱账号");
//设置主题
msg.setSubject("javamail发送邮件Demo");
//设置内容
msg.setContent("我是邮件","text/html;charset=utf-8");

/**
* 3.发送
*/
Transport.send(msg);

}


下面在介绍一下发送带附件的邮件需要修改的代码,只需要将上面的:

msg.setContent("我是邮件","text/html;charset=utf-8")


替换成下面的代码即可:

     MimeMultipart list=new MimeMultipart();

//创建MimebodtPart
MimeBodyPart part1=new MimeBodyPart();
part1.setContent("这是一封包含附件的垃圾邮箱","text/html;charset=utf-8");

list.addBodyPart(part1);

//创建MimebodtPart
MimeBodyPart part2=new MimeBodyPart();
//设置附件内容
part2.attachFile(new File("e:/照片/me.jpg"));
//设置显示的文件名 顺便解决乱码问题
part2.setFileName(MimeUtility.encodeText("哎哟,不错哦.jpg"));
list.addBodyPart(part2);

msg.setContent(list);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: