java发送带附件的邮件_Java邮件发送带附件

package Test;

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.Authenticator;

import javax.mail.BodyPart;

import javax.mail.Message;

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;

/*

需要的jar 包 activation.jar   mail.jar

*/

public class Send2{

// 邮箱服务器

private String host = "smtp.qq.com";// 或者是 smtp.163(sina).com

private String username = "784602719@qq.com";   //邮箱名称

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

private String mail_to = "784602719@qq.com";   //发送至 人邮箱

private String mail_from = "784602719@qq.com";   //发送人邮箱username

private String mail_subject = "送你的幸福!湘竹集美伊客!";   //邮箱主题

private String mail_body = "测试信息";   //邮箱内容

private String personalName = "784602719@qq.com"; //发送人邮箱username

public Send2(){}

public void send() throws Exception{

try{

Properties props=new Properties();

Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证

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

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

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

//设置session,和邮件服务器进行通讯。

MimeMessage message = new MimeMessage(session);

message.setSubject(mail_subject); // 设置邮件主题

//添加附件信息

Multipart   mp   =   new   MimeMultipart();

BodyPart mbp1 = new MimeBodyPart();

FileDataSource fds = new FileDataSource("d:\\测试.doc");

mbp1.setDataHandler(new DataHandler(fds));

//设置附件名称

mbp1.setFileName(MimeUtility.encodeText("d:\\测试.doc", "utf-8", null));

mp.addBodyPart(mbp1);

BodyPart mbp = new MimeBodyPart();

mbp.setContent(mail_body, "text/html;charset=utf-8");

mp.addBodyPart(mbp);

message.setContent(mp);

message.setSentDate(new Date()); // 设置邮件发送日期

Address address = new InternetAddress(mail_from, personalName);

message.setFrom(address); // 设置邮件发送者的地址

Address toAddress = new InternetAddress(mail_to); // 设置邮件接收方的地址

message.addRecipient(Message.RecipientType.TO, toAddress);

Transport.send(message); // 发送邮件

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

}catch (Exception ex){

//ex.printStackTrace();

if(ex instanceof javax.mail.AuthenticationFailedException){

System.out.println("认证错误");

}

throw new Exception(ex.getMessage());

}

}

/**

* 用来进行服务器对用户的认证

*/

public class Email_Autherticator extends Authenticator{

public Email_Autherticator(){

super();

}

public Email_Autherticator(String user, String pwd){

super();

username = user;

password = pwd;

}

public PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(username, password);

}

}

public static void main(String[] args){

Send2 sendmail = new Send2();

try{

sendmail.send();

}catch (Exception ex){

ex.printStackTrace();

}

}

}

/*注意: 当发送人使用QQ 邮箱时,QQ 邮箱必须开启PoP3/SMTP 协议

如何启用PoP3/SMTP 协议

登陆QQ邮箱 https://mail.qq.com/

设置-->账号--> 开启PoP3/SMTP 协议*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 JavaMail API 来发送附件邮件。下面是一个简单的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class SendMailWithAttachment { public static void main(String[] args) { // 发件人邮箱地址和密码 final String senderEmail = "your_email@example.com"; final String senderPassword = "your_email_password"; // 收件人邮箱地址 String recipientEmail = "recipient_email@example.com"; // 邮件主题和正文 String emailSubject = "Test email with attachment"; String emailBody = "This is a test email with attachment."; // 附件文件路径 String attachmentFilePath = "path/to/attachment/file"; // 发送邮件 Properties properties = new Properties(); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); Session session = Session.getInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(senderEmail, senderPassword); } }); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(senderEmail)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipientEmail)); message.setSubject(emailSubject); // 创建邮件正文部分 MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText(emailBody); // 创建附件部分 MimeBodyPart attachmentBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(attachmentFilePath); attachmentBodyPart.setDataHandler(new DataHandler(source)); attachmentBodyPart.setFileName(source.getName()); // 将正文部分和附件部分组合成混合的 MimeMultipart 对象 Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(attachmentBodyPart); // 将混合的 MimeMultipart 对象设置为整个邮件的内容 message.setContent(multipart); // 发送邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { System.out.println("Failed to send email. Error message: " + e.getMessage()); } } } ``` 在代码中,需要将 `senderEmail` 和 `senderPassword` 替换为发件人的邮箱地址和密码,将 `recipientEmail` 替换为收件人的邮箱地址,将 `emailSubject` 和 `emailBody` 替换为邮件的主题和正文,将 `attachmentFilePath` 替换为附件文件的路径。 使用 JavaMail API 发送附件邮件需要注意以下几点: - 需要引入 JavaMail API 和 Java Activation Framework(JAF)的库。 - 需要设置邮件服务器的地址和端口号,例如 Gmail 的地址是 smtp.gmail.com,端口号是 587。 - 需要使用 `javax.mail.Authenticator` 类创建一个实现了 `getPasswordAuthentication()` 方法的子类来提供发件人邮箱地址和密码。 - 需要创建一个 `MimeMessage` 对象来表示邮件,设置发件人、收件人、主题和内容。 - 需要创建一个 `MimeBodyPart` 对象来表示附件,将附件文件的数据源和文件名设置到 `DataHandler` 和 `setFileName()` 方法中,然后将其添加到混合的 `MimeMultipart` 对象中。 - 需要将邮件的正文部分和附件部分组合成混合的 `MimeMultipart` 对象,然后将其设置为整个邮件的内容。 - 最后调用 `Transport.send()` 方法将邮件发送出去。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值