java mail 抄送多用户_javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)...

先看源码,再来理解,可以直接使用!

JavaMailWithAttachment.java:

private MimeMessage message;

private Session session;

private Transport transport;

private String mailHost = "";

private String sender_username = "";

private String sender_password = "";

private String contentPart_Type = "";

private Properties properties = new Properties();

/*

* 初始化方法

*/

public JavaMailWithAttachment() {

try {

FileInputStream is=new FileInputStream("E:/workspace1.6/ICRM-H5/src/mailServer.properties");

properties.load(is);

this.mailHost = properties.getProperty("mail.smtp.host");

this.sender_username = properties.getProperty("mail.sender.username");

this.sender_password = properties.getProperty("mail.sender.password");

this.contentPart_Type = properties.getProperty("mail.contentPart.type");

} catch (IOException e) {

e.printStackTrace();

}

session = Session.getInstance(properties);

session.setDebug(true); //开启后有调试信息,发布时关闭

message = new MimeMessage(session);

}

/**

* 发送邮件

* @param subject

* 邮件主题

* @param sendHtml

* 邮件内容

* @param toUser

* 收件人 多个时参数形式 : "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"

* @param ccUser

* 抄送人 同上

* @param bccUser

* 密送人 同上

* @param attachment

* 附件

*/

public void doSendHtmlEmail(String subject, String sendHtml,

String toUser, String ccUser, String bccUser, File [] attachment){

try {

// 发件人

InternetAddress from = new InternetAddress(sender_username);

message.setFrom(from);

// 设置多个收件人地址

if(null != toUser && !toUser.isEmpty()){

@SuppressWarnings("static-access")

InternetAddress[] internetAddressTo = new InternetAddress().parse(toUser);

message.setRecipients(Message.RecipientType.TO, internetAddressTo);

}

// 设置多个抄送地址

if(null != ccUser && !ccUser.isEmpty()){

@SuppressWarnings("static-access")

InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);

message.setRecipients(Message.RecipientType.CC, internetAddressCC);

}

// 设置多个密送地址

if(null != bccUser && !bccUser.isEmpty()){

@SuppressWarnings("static-access")

InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);

message.setRecipients(Message.RecipientType.BCC, internetAddressBCC);

}

// 发送日期

message.setSentDate(new Date());

// 邮件主题

message.setSubject(subject);

// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

Multipart multipart = new MimeMultipart();

// 添加邮件正文

BodyPart contentPart = new MimeBodyPart();

contentPart.setContent(sendHtml, contentPart_Type);

multipart.addBodyPart(contentPart);

BodyPart attachmentBodyPart = null;

// 添加附件的内容

if (null != attachment && attachment.length != 0) {

for (File file : attachment) {

attachmentBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource(file);

attachmentBodyPart.setDataHandler(new DataHandler(source));

//MimeUtility.encodeWord可以避免文件名乱码

attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));

multipart.addBodyPart(attachmentBodyPart);

}

}

// 将multipart对象放到message中

message.setContent(multipart);

// 保存邮件

message.saveChanges();

// smtp验证

transport = session.getTransport("smtp");

transport.connect(mailHost, sender_username, sender_password);

// 发送

transport.sendMessage(message, message.getAllRecipients());

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

} catch (Exception e) {

e.printStackTrace();

} finally {

if (transport != null) {

try {

transport.close();

} catch (MessagingException e) {

e.printStackTrace();

}

}

}

}

mailServer.properties:

mail.smtp.host = smtp.ym.163.com

mail.smtp.auth = true

mail.sender.username = xxxx@xxxx.com

mail.sender.password = xxxxx

mail.contentPart.type = text/html;charset=UTF-8

由于javaMail需要一个Properties来注册Session,因此创建一个Properties来写入javaMail所需要的注册信息

mail.smtp.host发送方的smtp服务器,现在默认的是网易企业邮箱的smtp服务器,可以根据不同的邮箱进行更改。

mail.smtp.auth向smtp服务器提交认证

mail.sender.username发送者邮箱

mail.smtp.password发送者邮箱密码

还需要两个jar包:activation.jar ,mail.jar

下载地址:http://download..net/detail/qq741437836/9600110

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaMail 是用于发和接收电子邮件的 Java API。可以使用 JavaMail API 从多个发件人发电子邮件,下面是一个示例: ```java import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MultipleSenders { public static void main(String[] args) { // 发件人列表 String[] fromList = {"sender1@example.com", "sender2@example.com"}; // 收件人 String to = "recipient@example.com"; // SMTP 服务器地址 String host = "smtp.example.com"; // 邮件标题 String subject = "JavaMail Test"; // 邮件内容 String text = "This is a test email from JavaMail."; // 发件人用户名和密码 String username = "username"; String password = "password"; // 设置邮件会话属性 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", "587"); // 获取邮件会话 Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(username, password); } }); try { // 创建邮件消息 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromList[0])); for (int i = 1; i < fromList.length; i++) { message.addFrom(InternetAddress.parse(fromList[i])); } message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(text); // 发邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们使用 `addFrom()` 方法将多个发件人添加到邮件消息中。注意,SMTP 服务器可能会对此进行限制,因此请确保您遵守 SMTP 服务器的规定。另外,也要确保您有权使用添加的所有发件人地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值