public class JavaMailServiceRImpl {
//邮箱用户名
private static final String account = "********";
// 登录密码
private static final String password = "********";
// smtp服务器地址,不同邮箱不同(注意)
private static final String host = "smtp.exmail.qq.com";
// 端口
private static final String port = "465";
// 协议
private static final String protocol = "SMTP";
//正文
private static final String context = "您好:<br/><br/>" +
" 1234567894612303。<br/><br/>" +
" " +
" " +
" " +
" " +
"123456<br/><br/>" +
"提示:请不要往本邮箱发送邮件!";
public void sendMail1(JavaMailModel javaMailModel) {
//组装邮件体
Properties props = new Properties();
props.setProperty("mail.transport.protocol", protocol);
props.setProperty("mail.host", host);
props.setProperty("mail.smtp.port", port);
// 指定验证为true
props.setProperty("mail.smtp.auth", "true");
// 使用SSL,企业邮箱必需 start 开启安全协议
MailSSLSocketFactory mailSSLSocketFactory = null;
try {
mailSSLSocketFactory = new MailSSLSocketFactory();
mailSSLSocketFactory.setTrustAllHosts(true);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
props.put("mail.smtp.enable", "true");
props.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.socketFactory.port", port);
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//第一个参数为发送邮件的邮箱名
//第二个参数为密码(注意:普通邮箱为邮箱的授权码)
return new PasswordAuthentication(account, password);
}
};
//开启session
Session session = Session.getInstance(props, auth);
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
// 设置邮件接收方,多用户发送,users中的各邮箱之间用,隔开
//Address[] internetAddressTo = new InternetAddress().parse(users);
try{
message.setFrom(new InternetAddress(account)); // 设置发送者
message.setRecipient(Message.RecipientType.TO, new InternetAddress(javaMailModel.getRecipientAddress())); //设置发送方式与接收者
//邮件标题
message.setSubject("稿酬单:"+javaMailModel.getSubject());
// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");
//封装正文和附件
Multipart multipart = mesContent(context,javaMailModel.getMailAttachmentUrl());
//设置正文内容
message.setContent(multipart);
//创建 Transport用于将邮件发送
Transport.send(message);
}catch (Exception e){
System.out.println("邮件发送失败"+e.....);
}
}
/**
* 组装邮件正文和附件
* @param msg
* @param filename
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public Multipart mesContent(String msg,String filename) throws MessagingException, UnsupportedEncodingException {
// 创建消息部分
BodyPart messageBodyPart = new MimeBodyPart();
// 消息,并设置发送的格式
messageBodyPart.setDataHandler(new DataHandler(msg,"text/html;charset=UTF-8"));
// messageBodyPart.setText(msg);
// 创建多重消息
Multipart multipart = new MimeMultipart();
// 设置文本消息部分
multipart.addBodyPart(messageBodyPart);
// 附件部分
messageBodyPart = new MimeBodyPart();
// 设置要发送附件的文件路径
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
// 处理附件名称中文(附带文件路径)乱码问题
messageBodyPart.setFileName(MimeUtility.encodeText(filename));
multipart.addBodyPart(messageBodyPart);
return multipart;
}