先定义mail的一个bean:
public class Mail {
private String toAddress; // 邮件接收者
private String nickname; // 收件人昵称
private String subject; // 邮件主题
private String content; // 邮件内容
private String ChartSet; //字符集
private Map<String, String> AttachmentsPath; //附件路径列表
/////setter() and getter()...
}
有了bean后,发送文本形式邮件。发件人在类初始化时完成,然后接下来就可以不断发送而不需再定义。
public class TextMailSender {
private String hostname;
private String username;
private String password;
private String address;
private Boolean TLS;
public TextMailSender(String hostname, String address, String username, String password, Boolean TLS) {
this.hostname = hostname;
this.username = username;
this.password = password;
this.address = address;
this.TLS = TLS;
}
/**
* @throws EmailException
*
* **/
public void execute(Mail mail) throws EmailException{
SimpleEmail email = new SimpleEmail();
email.setTLS(TLS);
email.setHostName(hostname);
email.setAuthentication(username, password); // 用户名和密码
email.setFrom(address); // 发送地址
email.addTo(mail.getToAddress()); // 接收地址
email.setSubject(mail.getSubject()); // 邮件标题
email.setCharset(mail.getChartSet());
email.setMsg(mail.getContent()); // 邮件内容
email.send();
}
////
public static void main(String[] args) {
TextMailSender sender = new TextMailSender("smtp.qq.com", "cesul@qq.com", "cesul", "******", true);
Mail mail = new Mail();
mail.setToAddress("cesul@qq.com");
mail.setSubject("这又是一封测试邮件!");
mail.setContent("呵呵呵呵呵");
mail.setChartSet("utf-8");
try {
sender.execute(mail);
} catch (EmailException e) {
e.printStackTrace();
}
System.out.println("Finished");
}
}
如果需要添加(多个)附件,使用commons-mail的另一个类:
public class AttachmentSender {
private String hostname; //"SMTP服务器"
private String username;
private String password;
private String address;
private String nickname;
private Boolean TLS;
public AttachmentSender(String hostname, String address, String nickname, String username, String password, Boolean TLS) {
this.hostname = hostname;
this.nickname = nickname;
this.username = username;
this.password = password;
this.address = address;
this.TLS = TLS;
}
/**
* @throws UnsupportedEncodingException
* @throws EmailException
*
* **/
@SuppressWarnings("unchecked")
public void execute(Mail mail) throws UnsupportedEncodingException, EmailException{
// Create the email message
MultiPartEmail email = new MultiPartEmail();
email.setHostName(hostname);
email.setAuthentication(username, password);
email.setFrom(address, nickname); //可以加入发信人称呼
email.setTLS(TLS);
email.setCharset(mail.getChartSet());
email.addTo(mail.getToAddress(), mail.getNickname());
email.setSubject(mail.getSubject());
email.setMsg(mail.getContent());
EmailAttachment attachment;
Iterator<? extends Object> it = mail.getAttachmentsPath().entrySet().iterator(); //附件是多个 ,遍历
while (it.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>)it.next();
attachment = new EmailAttachment();
attachment.setPath(entry.getKey()); //键是附件路径
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(MimeUtility.encodeWord("附件","UTF-8",null));
attachment.setName(MimeUtility.encodeWord(entry.getValue(),"UTF-8",null)); //值是附件描述名
email.attach(attachment); // add the attachment
}
email.send(); // send the email
}
public static void main(String[] args) {
AttachmentSender sender = new AttachmentSender("smtp.qq.com", "cesul@qq.com", "陈志钊", "cesul", "******", true);
Mail mail = new Mail();
mail.setToAddress("cesul@qq.com");
mail.setNickname("你好");
mail.setSubject("Here is the picture you wanted");
mail.setContent("呵呵呵呵呵");
mail.setChartSet("utf-8");
Map<String, String> attachment = new HashMap<String, String>();
attachment.put("E:\\Photos\\2010-08-17-0.bmp", "这是你要的图片.bmp");
attachment.put("E:\\Photos\\2010-07-19-1.bmp", "这也是你要的图片.bmp"); //不要把相同路径的文件发两次
mail.setAttachmentsPath(attachment);
try {
sender.execute(mail);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (EmailException e) {
e.printStackTrace();
}
System.out.println("Finished");
}
}
总结:请参看各“发送类”的构造方法:-)
====================================
要用到的最新jar包下载:
* Commons-email-1.2.zip:
http://commons.apache.org/email/download_email.cgi
* JavaBeans(TM) Activation Framework 1.1.1:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SimpleBundleDownload
* JavaMail(TM) API 1.4.4 for All Supported Platforms:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter
分享到:
相关推荐
【Java 发送邮件及邮件附件】 在Java编程中,发送邮件及附件是常见的功能,...然而,在实际开发中,通常推荐使用JavaMail API或者第三方库如Apache Commons Email,它们提供了更强大且易于使用的接口来处理邮件的发送。
4. 创建`Email`对象:使用Apache Commons Email的`Email`类实例化一个邮件对象,设置收件人、抄送人、密送人、主题和正文。 5. 设置高级选项:如果需要,可以设置邮件的其他属性,如是否启用HTML内容、添加附件、...
- `spring-boot-starter-mail`用于发送邮件。 - `commons-pool2`是Apache Commons提供的对象池,用于优化Redis连接。 6. **系统设计与开发**:在日常工作中,面对这样的需求,开发者需要考虑系统架构、安全性、...
在实际应用中,使用Apache Commons Email组件发送邮件时,你需要: - **配置邮件服务器**: 首先,你需要一个支持SMTP(Simple Mail Transfer Protocol)的邮件服务器,如163提供的smtp.163.com。此外,还需要一个...
接着,使用`Email`类实例化一个邮件对象,设置邮件内容,最后通过`Transport.send()`方法将邮件发送出去。 总结来说,Java开发的邮件发送涉及了JavaMail API、Apache Commons Email库以及相关依赖,这些工具和库...
在Java编程中,文件上传和邮件发送是两个重要的功能,广泛应用于各种系统,如网站、应用程序和服务端逻辑。本文将详细讲解如何使用Java实现这两个功能,并探讨几种不同的邮件发送方式。 首先,文件上传通常涉及到...
如果`MailUtil.txt`中包含类似的方法,可能已经封装了发送邮件的逻辑,使其更易于使用和复用。你可以根据`说明.txt`中的指示,将这些代码整合到你的项目中,或者根据自己的需求进行修改。 总的来说,JavaMail API是...
Apache Commons Email库则提供了一种更简洁的方式来发送邮件,它简化了邮件构造和发送的过程,但仍然需要开发者手动配置和管理邮件发送的细节。 Spring框架提供了一种高级的邮件发送抽象层,位于`org.spring...
在使用`javaMail`发送邮件时,通常需要同时添加`mail.jar`以确保邮件功能的正常运作。 #### ajaxtags-1.2-beta3.jar - **作用**: 提供了Ajax相关的标签库,使得开发者可以在JSP页面中如同使用普通标签一样使用Ajax...
- **创建Transport**:使用`Transport`类发送邮件,调用`Transport.send()`方法。 3. **示例代码**: ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props...
然后在代码中,你可以通过Spring的依赖注入来获取JavaMailSender实例,并使用它发送邮件: ```java @Component public class EmailService { private final JavaMailSender javaMailSender; private final ...
4. **构建HTML内容**:使用`setHtmlMsg()`方法设置邮件的HTML内容。你可以包含文本、图片、链接等元素,以创建美观的布局。 ```java String htmlContent = "<h1>欢迎!</h1><p>这是一封HTML格式的邮件示例。</p>"; ...
Java发送邮件是编程中常见的一种任务,特别是在自动化脚本或者服务通知中经常使用。...如果需要更高级的功能,如多邮件发送、定时发送等,可以通过扩展`SendMail`类或使用第三方库如Apache Commons Email来实现。
2. **mail-1.4.7.jar**:此文件为JavaMail API的实现,用于支持发送邮件功能,某些Web服务可能需要通过邮件进行通信或通知。 3. **axis-wsdl4j-1.5.1.jar**:Wsdl4j库,用于解析和操作WSDL文件,是Axis生成服务端...
2. **创建MimeMessage**:使用`Session`实例创建`MimeMessage`对象,设置发件人、收件人、主题和正文内容。 3. **配置SMTP Transport**:根据邮件服务器的要求,可能需要配置SSL/TLS安全连接。使用`Transport`类的`...
在完成代理类生成后,开发者就可以通过实例化这些类并调用其方法来与Web服务进行交互,从而执行诸如发送请求、接收响应等操作。这大大简化了Web服务客户端的开发工作,使得开发人员能够专注于业务逻辑,而不是底层的...
2. **执行转换命令**:使用`WSDL2Java`工具,这是一个位于`org.apache.axis.wsdl`包下的类,用于将WSDL文件转换为Java源代码。命令行如下所示: ``` java -classpath classpath org.apache.axis.wsdl.WSDL2Java -o...
9.Email:提供了Java发送邮件的工具类。例如: ```java import org.apache.commons.mail.Email; import org.apache.commons.mail.SimpleEmail; Email email = new SimpleEmail(); email.setHostName("smtp.gmail....