Java实现邮件发送QQ邮箱带附件

网友投稿 329 2022-12-12


Java实现邮件发送QQ邮箱带附件

本文实例为大家分享了java实现邮件发送QQ邮箱带附件的具体代码,供大家参考,具体内容如下

添加依赖

javax.mail

mail

1.4.7

关键代码

import java.io.File;

import java.io.UnsupportedEncodingException;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.NoSuchProviderException;

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;

/**

* 邮件发送工具类

* Author:杨杰超

* Date:2020年1月9日 下午12:02:51

* Copyright (c) 2020, yangjiechao@dingtalk.com All Rights Reserved.

*

*/

public class SendMail {

/**

* 想QQ邮箱发送邮件

*

* @param formMail

* 发送人邮箱地址

* @param descMail

* 接收人邮箱地址

* @param subject

* 邮箱主题

* @param content

* 邮箱内容

* @param files

* 附件列表

* @param contentType

* 内容格式

* @param password

* SMTP密码

* @throws MessagingException

* @throws UnsupportedEncodingException

*/

public static void sendQQMail(String formMail, String descMail, String subject, Shttp://tring content, File[] files,

String contentType, String password) throws MessagingException, UnsupportedEncodingException {

Properties properties = new Properties();

properties.setProperty("mail.smtp.host", "smtp.qq.com");

properties.setProperty("mail.smtp.port", "465");

properties.setProperty("mail.smtp.auth", "true");

properties.setProperty("mail.debug", "true");

properties.setProperty("mail.transport.protocol", "smtp");

properties.setProperty("mail.smtp.ssl.enable", "true");

Session session = Session.getInstance(properties, new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(formMail, password);

}

});

Message message = new MimeMessage(session);

try {

message.setFrom(new InternetAddress(formMail));

message.setRecipient(Message.RecipientType.TO, new InternetAddress(descMail));

message.setSubject(subject);

// 是否存在附件

if (null != files && files.length > 0) {

MimeMultipart multipart = new MimeMultipart();

BodyPart contentPart = new MimeBodyPart();

contentPart.setContent(content, contentType);

multipart.addBodyPart(contentPart);

for (File file : files) {

MimeBodyPart attachment = new MimeBodyPart();

DataHandler dh2 = new DataHandler(new FileDataSource(file));

attachment.setDataHandler(dh2);

attachment.setFileName(MimeUtility.encodeText(dh2.getName()));

multipart.addBodyPart(attachment);

}

multipart.setSubType("mixed");

message.setContent(multipart);

message.saveChanges();

}

// 普通

else {

message.setContent(content, contentType);

}

Transport transport = session.getTransport();

transport.connect(formMail, password);

Transport.send(message);

} catch (UnsupportedEncodingException e) {

throw e;

} catch (NoSuchProviderException e) {

throw e;

} catch (MessagingException e) {

throw e;

}

}

public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {

// 由哪个邮箱发送

String formMail = "********@qq.com";

// QQ邮箱>设置>账户 开启POP3/SMTP服务 查看smtp密码

String smtpPassword = "****************";

// 发送人邮箱地址

String descMail = "470947852@qq.com";

String contentType = "text/html;charset=UTF-8";

String subject = "测试邮件发送,含附件";

String content = "test send mail, 这里是中文";

File[] files = new File[2];

files[0] = new File("C:/test_1.xls");

files[1] = new File("C:/test_2.xls");

SendMail.sendQQMail(formMail, descMail, subject, http://content, files, contentType, smtpPassword);

}

}


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

上一篇:配置Servlet两种方法以及特点详解
下一篇:SpringIOC DI循环依赖实例详解
相关文章

 发表评论

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