1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 使用Java程序发送邮件|发送有附件的邮件|进行邮件群发

使用Java程序发送邮件|发送有附件的邮件|进行邮件群发

时间:2024-06-25 12:02:14

相关推荐

使用Java程序发送邮件|发送有附件的邮件|进行邮件群发

这是我的目录

一、开启邮箱服务编写发送邮件程序

今天公司某一个业务需要给顾客发邮件进行营销,并且需要附带附件,公司当前对该功能还没有进行封装。我暂时对于使用Java程序发送邮件练习一个小demo。

本文涉及到的知识点:

1.如何使用Java程序发送邮件

2.如何发送有附件的邮件

3.如何进行群发邮件

4.如何携带多个附件

一、开启邮箱服务

打开QQ邮箱客户端,点击设置 打开服务,并获取授权码(注意授权码很重要,为了保证传输的安全,我们后续使用传输中需要使用授权码作为密码的校验) 注意这一步可能需要我们使用绑定邮箱的手机号发送短信,然后返回页面查看授权码就OK了

编写发送邮件程序

import java.io.UnsupportedEncodingException;import java.security.GeneralSecurityException;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;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;import com.alibaba.druid.util.StringUtils;import com.sun.mail.util.MailSSLSocketFactory;/*** 发送邮件工具类** @author leiyu*/public class SendMailAcceUtils {/*** 发送带附件的邮件** @param receive 收件人* @param subject 邮件主题* @param msg邮件内容* @param filename 附件地址* @return* @throws GeneralSecurityException*/public static boolean sendMail(String receive, String subject, String msg, String filename)throws GeneralSecurityException {if (StringUtils.isEmpty(receive)) {return false;}// 发件人电子邮箱final String from = "1010866409@";// 发件人电子邮箱密码final String pass = "xxxxxxxxxx";//注意这部分就是你获取的授权码// 指定发送邮件的主机为 String host = ""; // 邮件服务器// 获取系统属性Properties properties = System.getProperties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);properties.put("mail.smtp.auth", "true");MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);// 获取默认session对象Session session = Session.getDefaultInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {// qq邮箱服务器账户、第三方登录授权码return new PasswordAuthentication(from, pass); // 发件人邮件用户名、密码}});try {// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// 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);// 附件部分messageBodyPart = new MimeBodyPart();// 设置要发送附件的文件路径DataSource source = new FileDataSource(filename);messageBodyPart.setDataHandler(new DataHandler(source));// messageBodyPart.setFileName(filename);// 处理附件名称中文(附带文件路径)乱码问题messageBodyPart.setFileName(MimeUtility.encodeText(filename));multipart.addBodyPart(messageBodyPart);// 发送完整消息message.setContent(multipart);// 发送消息Transport.send(message);// System.out.println("Sent message successfully....");return true;} catch (MessagingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return false;}public static void main(String[] args) {String receive="1010866409@";String subject ="邮件主题";String msg ="邮件内容";String filename ="E:\\a.excel";try {SendMailAcceUtils.sendMail(receive, subject, msg, filename);} catch (GeneralSecurityException e) {e.printStackTrace();}}}

发送邮件— 实现群发

实现邮件的群发,实际上就是发件人的邮箱是多个,我们可能有多种方式进行邮件的发送,这里举例是使用最简单遍历的方式实现邮件的群发。

public static void main(String[] args) {/******实现Java邮件的群发*****/ArrayList<String> strings = new ArrayList<String>();strings.add("1010866409@");strings.add("1010866409@");/*****************/// String receive="1010866409@";for (int i = 0; i < strings.size() ; i++) {String receive=strings.get(i);String subject ="这是一个邮件主题(欢迎您选择我们得营销策略)";String msg ="邮件内容(欢迎来店选购适合您的产品)";String filename ="E:\\a.md";try {SendMailAcceUtils.sendMail(receive, subject, msg, filename);} catch (GeneralSecurityException e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。