概述
SendMail.java
package xxx.common;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
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 com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
public class SendMail {
public static void main(String[] args) {
//配置参数
Properties props=new Properties();
props.setProperty("mail.smtp.auth", "true");//是否有身份验证
props.setProperty("mail.transport.protocol", "smtp");//使用的传输协议
props.setProperty("mail.smtp.host", "smtp.163.com");//设置SMTP服务器
props.setProperty("mail.smtp.from", "xxx@163.com");//发送方邮件地址
//默认port 是25 这个可以自己设置mail.smtp.port
//连接邮件服务器会话对象,传入参数和用户名密码验证对象,此处用匿名类实现
Session session=Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xxxxx@163.com","xxxxxx");
}
});
//显示调试信息
session.setDebug(true);
//复杂信息对象
MimeMessage msg=new MimeMessage(session);
try {
//发送方的邮箱地址
msg.setFrom(new InternetAddress("xxxxx@163.com"));
//邮件主题
msg.setSubject("这是一封测试邮件");
//接收方的邮箱地址数组,Message.RecipientType.TO是发送方式(TO正常,CC抄送,BCC密件抄送)
msg.setRecipients(Message.RecipientType.TO, new Address[]{new InternetAddress("xxxx@qq.com")});//在此处传入接收方邮箱地址
//为混合模式的邮件内容对象
MimeMultipart msgMultipart = new MimeMultipart("mixed");
//内容1:普通HTML文本
MimeBodyPart body1 = new MimeBodyPart();
body1.setContent("红色的测试文本","text/html;charset=gbk");
//将内容1加入到邮件内容对象中
msgMultipart.addBodyPart(body1);
//内容2:一个文件附件
MimeBodyPart body2 = new MimeBodyPart();
DataSource ds = new FileDataSource("f:\20.png");//源文件路径
DataHandler dh = new DataHandler(ds);//包装文件
body2.setDataHandler(dh);//设置内容2的文件附件
body2.setFileName(MimeUtility.encodeText("文件20.png"));//设置附件名称,中文要转码
//将内容2加入到邮件内容对象中
msgMultipart.addBodyPart(body2);
//设置邮件内容
msg.setContent(msgMultipart);
//发送邮件
Transport.send(msg);
} catch (MessagingException e) {
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
还是有一点问题没有解决的了
在使用qq邮箱为发送方的时候会报这个错误
javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at com.javaMail.entity.MailUtil.sendEmail(MailUtil.java:38)
at com.javaMail.entity.MailUtil.main(MailUtil.java:60)
设置了 port 465之后 提示信息没有报错 或者是我等待的时间太短了,看提示信息有一条这样的
.........(略) isSSL false 卡到这里不继续了
这个是
如何设置POP3/SMTP的SSL加密方式?(腾讯)
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369
做这个的时候还有个小问题,用163都调试成功了 控制台正常输出信息,但是打开qq邮箱收件箱一看 噫? 为啥没有邮件呢 ,然后俺就多执行了几遍,还是没有邮件
就在执行了n遍以后突然想到了 邮箱是会自动处理垃圾邮件的 打开垃圾箱 测试邮件老老实实的躺在那里
注:以上xxx标示的 皆为个人信息不便透露 嘿嘿
最后
以上就是暴躁鞋垫为你收集整理的java 发送邮件 菜鸟_【垃圾菜鸟笔记】java 一个类发送邮件的全部内容,希望文章能够帮你解决java 发送邮件 菜鸟_【垃圾菜鸟笔记】java 一个类发送邮件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复