package cn.com.test.mail;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Multipart;
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.util.ByteArrayDataSource;
/**
* 创建一个复杂的邮件,这个邮件包括一段正文和两个附件
* 其中正文要包含一张图片
* @author Administrator
*
*/
public class Demo3 {
public static void main(String[] args) throws Exception {
//发件人地址
String senderAddress = "xxxxx@.com";
//收件人地址
String recipientAddress = "zzzzzz@.com";
//发件人账户名
String senderAccount = "xxxxx@.com";
//发件人账户密码
String senderPassword = "$#@FEFE#";
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = new MimeMessage(session);
/*邮件消息头设置*/
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(RecipientType.TO, InternetAddress.parse(recipientAddress));
msg.setSubject("From gaojingsong 这是一封复杂邮件");
/*邮件消息内容设置,包括两个附件和一段正文*/
Multipart msgPart = new MimeMultipart("mixed");
msg.setContent(msgPart);
MimeBodyPart body = new MimeBodyPart(); //表示正文
MimeBodyPart attach1 = new MimeBodyPart(); //表示附件1
MimeBodyPart attach2 = new MimeBodyPart(); //表示附件2
msgPart.addBodyPart(body);
msgPart.addBodyPart(attach1);
msgPart.addBodyPart(attach2);
/*以下为设置正文*/
/*正文是文字和图片混合的*/
Multipart contentPart = new MimeMultipart("related");
body.setContent(contentPart);
MimeBodyPart content = new MimeBodyPart(); //文字
MimeBodyPart img = new MimeBodyPart(); //图片
contentPart.addBodyPart(content);
contentPart.addBodyPart(img);
ByteArrayDataSource fileds = new ByteArrayDataSource(new FileInputStream("F:/micro_workspace/mail/src/main/java/50.jpg"),"application/octet-stream");
DataHandler imgDataHandler = new DataHandler(fileds);
//DataSource imgds = new FileDataSource("D:\\picture\\jpg\\touxiang.jpg");
//DataHandler imgDataHandler = new DataHandler(imgds);
img.setDataHandler(imgDataHandler);
//注意:Content-ID的属性值一定要加上<>,不能是touxiang.jpg
img.setHeader("Content-ID", "<touxiang.jpg>");
//为图片设置文件名,有的邮箱会把html内嵌的图片也当成附件
img.setFileName("touxianga.jpg");
//设置文字内容
/**
* 注意:在html代码中要想显示刚才的touxiang.jpg
* src里不能直接写Content-ID的值,要用cid:这种方式
*/
content.setContent("<div style='color:red;font-size:18px;'>http://gaojingsong.iteye.com/</div>:" +
"我这里有一张图片<img src='cid:touxiang.jpg' alt='touxiang' " +
"width=\"30px\" height='40px' />,好看吗?", "text/html;charset=utf-8");
/*正文内容设置结束*/
/*下面为设置附件*/
attach1.setDataHandler(new DataHandler(new FileDataSource("F:/micro_workspace/mail/src/main/java/cn/com/test/mail/App.java")));
attach1.setFileName("file1.txt");
attach2.setDataHandler(new DataHandler(new FileDataSource("F:/micro_workspace/mail/src/main/java/2018-07-29_182356.jpg")));
attach2.setFileName("file2.jpg");
msg.saveChanges();
//把邮件以文件的形式写入到磁盘
OutputStream os = new FileOutputStream("C:\\demo.eml");
msg.writeTo(os);
os.close();
Transport trans = session.getTransport();
trans.connect("smtp.服务器", 25, senderAccount, senderPassword);
trans.sendMessage(msg,msg.getAllRecipients());
}
}
相关推荐
06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe
使用 `Transport.send()` 方法发送邮件: ```java Transport.send(mailMessage); ``` 以上就是使用JavaMail发送带有附件的邮件的基本步骤。这个过程需要正确配置邮件服务器的属性,如SMTP服务器地址、端口、用户名...
6. **发送邮件**:最后,使用Transport类的send方法发送邮件。 ```java Transport.send(message); ``` 以上就是使用JavaMail发送带附件的邮件的基本流程。需要注意的是,实际应用中可能需要处理更多复杂情况,...
本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...
下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...
JavaMail邮件发送(带附件)
这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、HTML和包含附件的邮件,以及在实际应用中需要注意的配置步骤。 1. *...
这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...
这个源码示例是关于如何使用JavaMail来发送带有附件的邮件。JavaMail API 遵循JSR 54规范,使得开发者能够处理复杂的邮件功能,如SMTP、POP3和IMAP协议,以及HTML邮件和多部分消息(包括附件)。 首先,我们需要...
本示例将重点介绍如何使用JavaMail库来实现163邮箱向腾讯邮件发送邮件的流程。 首先,确保你的项目中已经包含了JavaMail所需的依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,如果你...
### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
在设置好 MailInfo 对象后,我们可以使用 JavaMail 库来发送邮件。我们可以使用 Transport 对象来发送邮件, Transport 对象是 JavaMail 库中的一个核心对象,用于发送和接收电子邮件。我们可以使用 Transport 对象...
在JavaMail中,创建和发送邮件涉及到对邮件标准的理解,如RFC882和MIME协议。 RFC882 是一个早期的定义电子邮件格式的文档,规定了邮件的基本结构,包括邮件头和邮件体。邮件头包含了诸如发件人(from)、收件人...
回执邮件是邮件服务中的一项功能,它允许发件人在发送邮件后得知收件人是否已阅读邮件。本资料包主要涵盖了使用 JavaMail 实现回执邮件以及相关邮件操作的知识点。 首先,发送带有回执请求的邮件是通过设置邮件头...
下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...
在这个例子中,Servlet可能解析请求参数,构造MIMEMessage,然后使用Session(JavaMail API的一部分)的Transport.send方法发送邮件。 8. **安全性**: 在处理用户上传的附件时,需要注意安全问题,如防止恶意文件的...
这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...
通过以上步骤,你就可以利用 JavaMail 实现功能完备的邮件发送了,包括向多个人发送邮件、设置抄送和密送,以及添加多个附件。注意,实际使用时,你需要根据你的邮件服务提供商调整相应的配置参数,例如对于其他邮箱...