java ssl 发送邮件_Java Web stmp发送带附件邮件(附SSL版)

本文提供了一个Java Web应用中通过SMTP使用SSL发送带附件邮件的实例代码,详细介绍了创建邮件对象、设置收发件人、主题、正文及附件的方法,并提供了SSL配置的实现方式。
摘要由CSDN通过智能技术生成

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

public class MailFileSendUtils {

private Properties props; //系统属性

private Session session; //邮件会话对象

private MimeMessage mimeMsg; //MIME邮件对象

private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

/**

* Constructor

* @param

*/

public MailFileSendUtils(){

props = System.getProperties();

props.put("mail.smtp.auth","false");

session = Session.getDefaultInstance(props, null);

session.setDebug(true);

mimeMsg = new MimeMessage(session);

mp = new MimeMultipart();

}

/**

* Constructor

* @param smtp 邮件发送服务器

*/

public MailFileSendUtils(String smtp, String username, String password){

props = System.getProperties();

props.put("mail.smtp.auth","true");

props.put("mail.smtp.host", smtp);

props.put("username", username);

props.put("password", password);

session = Session.getDefaultInstance(props, null);

session.setDebug(true);

mimeMsg = new MimeMessage(session);

mp = new MimeMultipart();

}

/**

* 发送邮件

*/

public boolean sendMail(String from, String[] to, String subject, String content, String filename) {

try {

//设置发信人

mimeMsg.setFrom(new InternetAddress(from));

//设置接收人

for (int i = 0; i < to.length; i++) {

mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i]));

}

//设置抄送人

// for (int i = 0; i < copyto.length; i++) {

// mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto[i]));

// }

//设置主题

mimeMsg.setSubject(subject);

//设置正文

BodyPart bp = new MimeBodyPart();

bp.setContent(content, "text/html;charset=utf-8");

mp.addBodyPart(bp);

//设置附件

bp = new MimeBodyPart();

FileDataSource fileds = new FileDataSource(filename);

bp.setDataHandler(new DataHandler(fileds));

bp.setFileName(MimeUtility.encodeText(fileds.getName(),"UTF-8","B"));

mp.addBodyPart(bp);

mimeMsg.setContent(mp);

mimeMsg.saveChanges();

//发送邮件

if(props.get("mail.smtp.auth").equals("true")){

Transport transport = session.getTransport("smtp");

transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password"));

transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));

// transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));

transport.close();

}else{

Transport.send(mimeMsg);

}

System.out.println("邮件发送成功");

} catch (MessagingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return true;

}

// public void toSendMail(SendMailParam sendMailParam){

// MailFileSendUtils email = new MailFileSendUtils(sendMailParam.getSmtp(), sendMailParam.getUsername(), sendMailParam.getPassword());

// email.sendMail(sendMailParam.getFrom(), sendMailParam.getTo(), sendMailParam.getSubject(), sendMailParam.getContent(), sendMailParam.getFilepath());

// }

public static void main(String[] args) {

String smtp = "smtp.exmail.qq.com";

String username = "发送的邮箱账号";

String password = "发送的邮箱密码";

String from = "发送的邮箱";

String[] to = {"接收邮件的邮箱"};

// String[] copyto = {"抄送的邮箱"};

String subject = "主题6";

String content = "邮件内容6";

String filename = "附件的文件";

MailFileSendUtils email = new MailFileSendUtils(smtp, username, password);

// email.sendMail(from, to, copyto, subject, content, filename);

email.sendMail(from, to, subject, content, filename);

}

}

(附:SSL版)

public class MailFileSendUtils {

private Properties props; //系统属性

private Session session; //邮件会话对象

private MimeMessage mimeMsg; //MIME邮件对象

private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

/**

* Constructor

* @param

*/

public MailFileSendUtils(){

props = System.getProperties();

props.put("mail.smtp.auth","false");

session = Session.getDefaultInstance(props, null);

session.setDebug(true);

mimeMsg = new MimeMessage(session);

mp = new MimeMultipart();

}

/**

* Constructor

* @param smtp 邮件发送服务器

*/

public MailFileSendUtils(String smtp,

String username,

String password){

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

props = System.getProperties();

MailSSLSocketFactory sf = null;

try {

sf = new MailSSLSocketFactory();

} catch (GeneralSecurityException e) {

}

sf.setTrustAllHosts(true);

props.put("mail.smtp.auth","true");

props.put("mail.smtp.host", smtp);

props.put("mail.smtp.socketFactory.class", SSL_FACTORY);

props.put("mail.smtp.socketFactory.fallback", "false");

props.put("mail.smtp.ssl.enable", "true");

props.put("mail.smtp.port", "465");

props.put("mail.smtp.ssl.socketFactory", sf);

// props.put("username", username);

// props.put("password", password);

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

@Override

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(username, password);

}

});

session.setDebug(true);

mimeMsg = new MimeMessage(session);

mp = new MimeMultipart();

}

/**

* 发送邮件

*/

public boolean sendMail(String from,

String[] to,

String subject,

String content,

String filename) {

try {

//设置发信人

mimeMsg.setFrom(new InternetAddress(from));

//设置接收人

for (int i = 0; i < to.length; i++) {

mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i]));

}

//设置抄送人

// for (int i = 0; i < copyto.length; i++) {

// mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto[i]));

// }

//设置主题

mimeMsg.setSubject(subject);

//设置正文

BodyPart bp = new MimeBodyPart();

bp.setContent(content, "text/html;charset=utf-8");

mp.addBodyPart(bp);

//设置附件

bp = new MimeBodyPart();

FileDataSource fileds = new FileDataSource(filename);

bp.setDataHandler(new DataHandler(fileds));

bp.setFileName(MimeUtility.encodeText(fileds.getName(),"UTF-8","B"));

mp.addBodyPart(bp);

mimeMsg.setContent(mp);

mimeMsg.saveChanges();

//发送邮件

if(props.get("mail.smtp.auth").equals("true")){

Transport transport = session.getTransport("smtp");

transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password"));

transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));

// transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));

transport.close();

}else{

Transport.send(mimeMsg);

}

System.out.println("邮件发送成功");

} catch (MessagingException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return true;

}

public boolean toSendMail(SendMailParam sendMailParam){

MailFileSendUtils email = new MailFileSendUtils(

sendMailParam.getSmtp(),

sendMailParam.getUsername(),

sendMailParam.getPassword());

email.sendMail(

sendMailParam.getFrom(),

sendMailParam.getTo(),

sendMailParam.getSubject(),

sendMailParam.getContent(),

sendMailParam.getFilepath());

return true;

}

// public static void main(String[] args) {

// String smtp = "smtp.mxhichina.com";

// String username = "邮箱";

// String password = "邮箱密码";

// String from = "谁去发";

// String[] to = {"发给谁"};

String[] copyto = {"抄送的邮箱"};

// String subject = "huawei";

// String content = "邮件内容6666";

// String filename = "gdt-3583118353-ad-20170823.xls";

// MailFileSendUtils email = new MailFileSendUtils(smtp, username, password);

email.sendMail(from, to, copyto, subject, content, filename);

// email.sendMail(from, to, subject, content, filename);

// }

}

在项目中使用这套工具,main方法我注释掉,然后使用toSendMail(SendMailParam sendMailParam)。

这里定义的SendMailParam 为:

public class SendMailParam {

private String smtp;

private String username;

private String password;

private String from;//发送人

private String[] to;//接收人

// String[] copyto = {"909891736@qq.com"};

private String subject;//邮件主题

private String content;//邮件内容

private String filepath;//文件拿到的路径

public SendMailParam(){

this.smtp = "smtp.exmail.qq.com";//例子

this.username = "邮箱账号";

this.password = "邮箱密码";

this.from = "邮箱";

this.subject = "";

this.content = "";

this.filepath = "";

}

public String getSmtp() {

return smtp;

}

public void setSmtp(String smtp) {

this.smtp = smtp;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getFrom() {

return from;

}

public void setFrom(String from) {

this.from = from;

}

public String[] getTo() {

return to;

}

public void setTo(String[] to) {

this.to = to;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getFilepath() {

return filepath;

}

public void setFilepath(String filepath) {

this.filepath = filepath;

}

}

maven依赖包

javax.mail

mail

1.4.7

gradle依赖包

compile "javax.mail:mail:1.4.7"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值