栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java不使用客户端授权密码直接用账号密码发送带附件的邮件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java不使用客户端授权密码直接用账号密码发送带附件的邮件

}

public void setPassword(String password) {

this.password = password;

}

public String getSenderName() {

return senderName;

}

public void setSenderName(String senderName) {

this.senderName = senderName;

}

@Override

public String toString() {

return “EmailConfig{” +

“host=’” + host + ‘’’ +

“, username=’” + username + ‘’’ +

“, password=’” + password + ‘’’ +

“, senderName=’” + senderName + ‘’’ +

‘}’;

}

}

@Autowired

private EmailConfig emailConfig;

public void sendMailForFile(String from, String receive, String subject, String msg, String filename){

if (StringUtils.isEmpty(receive)) {

throw new MyException(“收件人邮箱号不能为空”);

}

//1、创建邮件对象

JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

//2、发邮件人邮箱

javaMailSender.setUsername(emailConfig.getUsername());

//3、发邮件人邮箱密码(默认使用客户端的授权码)

javaMailSender.setPassword(emailConfig.getPassword());

//4、设置邮件服务器主机名 SMTP服务器地址

javaMailSender.setHost(emailConfig.getHost());

//5、SMTP服务器: 默认端口 换成腾讯云服务器后,需要将端口换成465

// javaMailSender.setPort(465);

javaMailSender.setPort(25);

//6、//发送邮件协议名称

javaMailSender.setProtocol(“smtp”);

//7、编码格式

javaMailSender.setDefaultEncoding(“UTF-8”);

//8、创建连接对象,连接到邮箱服务器

Properties mailProperties = new Properties();

//发送服务器需要身份验证,要采用指定用户名密码的方式去认证

mailProperties.put(“mail.smtp.auth”, true);

mailProperties.put(“mail.smtp.starttls.enable”, true);

//9、添加连接对象到邮件对象中

javaMailSender.setJavaMailProperties(mailProperties);

try {

// 得到默认的对话对象

Authenticator a = new Authenticator() {

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(emailConfig.getUsername(), emailConfig.getPassword());

}

};

MimeMessage message = getMimeMessage(mailProperties,a,emailConfig.getUsername(),from, receive, subject, msg, filename);

javaMailSender.send(message);

// 发送消息

// Transport.send(message);

System.out.println(“Sent message successfully…”);

} catch (Exception e) {

e.printStackTrace();

log.error(“发送失败{}”,e.getMessage());

}

}

private MimeMessage getMimeMessage(Properties props,Authenticator a ,String from,String fromEmail, String receive, String subject, String msg, String filename) throws MessagingException, UnsupportedEncodingException {

// 创建默认的 MimeMessage 对象

//创建Session实例

Session session = Session.getDefaultInstance(props, a);

session.setDebug(true);

//创建MimeMessage实例对象

MimeMessage message=new MimeMessage(session);

//设置自定义发件人昵称

String nick="";

try {

// nick=javax.mail.internet.MimeUtility.encodeText(“luminescience”);

if(StringUtil.isNotNull(fromEmail)){

nick=javax.mail.internet.MimeUtility.encodeText(fromEmail);

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

message.setFrom(new InternetAddress(nick+" <"+from+">"));

// Set From: 头部头字段

// message.setFrom(new InternetAddress(from));

// Set To: 头部头字段

message.addRecipient(Message.RecipientType.TO, new InternetAddress(receive));

// Set Subject: 主题文字

message.setSubject(subject);

// 创建消息部分

BodyPart messageBodyPart = new MimeBodyPart();

// 消息

messageBodyPart.setText(msg);

// 创建多重消息

Multipart multipart = new MimeMultipart();

// 设置文本消息部分

multipart.addBodyPart(messageBodyPart);

// 设置要发送附件的文件路径

if(StringUtil.isNotNull(filename)){

// 附件部分

messageBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource(filename);

messageBodyPart.setDataHandler(new DataHandler(source));

messageBodyPart.setFileName(filename);

// 处理附件名称中文(附带文件路径)乱码问题

messageBodyPart.setFileName(MimeUtility.encodeText(filename));

multipart.addBodyPart(messageBodyPart);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号