突然要用到发邮件,今天看了下javamail,从网上找了个例子,自己改了改,调通了,放到这里,以便今后使用
除原有功能外,增加定时发送的功能,增加消除邮件中的乱码解决方法,即通过服务器自动发送时,邮件标题,内容,发件人,收件人不会出现乱码,已经测试过,没问题
/**
* 除原有功能外,增加定时发送的功能
* 增加消除邮件中的乱码解决方法,
* 即通过服务器自动发送时,邮件标题,内容,发件人,收件人不会出现乱码
* 已经测试过,没问题
*/
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
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;
class PopupAuthenticator extends Authenticator {
public static final String mailuser=""; // 邮箱名,@之前的
public static final String password=""; // 邮箱密码
public static final String subject = "Javamal发送测试";
// 设置多个抄送人
public static final String[] cc = {"",""};
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mailuser,password);
}
}
public class test{
// props.put("mail.transport.protocol", "smtp"); //使用smtp协议
public static void main(String[] args){
new test().beepForAnHour();
}
public void test_main() throws MessagingException, UnsupportedEncodingException{
Properties props = new Properties();
props.put("mail.smtp.host","smtp.qq.com");
props.put("mail.smtp.auth","true"); // 是否需要身份验证
PopupAuthenticator auth = new PopupAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(true); //主要是利于调试,默认为false
// 发件人
Address addressFrom = new InternetAddress(PopupAuthenticator.mailuser+"@qq.com", MimeUtility.encodeWord("自动发送的测试员","utf-8", "Q"));
// 收件人
Address addressTo = new InternetAddress("", MimeUtility.encodeWord("自动发送的测试员","utf-8","Q"));
// 密件收件人
Address addressBCC = new InternetAddress("","自动发送的测试员");
MimeBodyPart textBodyPart=new MimeBodyPart();
textBodyPart.setText("邮件成功发送,且无乱码"); // 邮件内容
MimeBodyPart fileBodyPart=new MimeBodyPart();
FileDataSource fds=new FileDataSource("");//要发送的附件地址
fileBodyPart.setDataHandler(new DataHandler(fds));
fileBodyPart.setFileName(fds.getName());// 设置附件的名称
Multipart container=new MimeMultipart();
container.addBodyPart(textBodyPart);
container.addBodyPart(fileBodyPart);
try{
MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());// 设置发送时间
message.setSubject(PopupAuthenticator.subject,"utf-8");// 设置邮件主题的编码格式
message.setFrom(addressFrom); // 发件人
if(null != addressTo){
message.addRecipient(Message.RecipientType.TO,addressTo);// 收件人
}
if(null != PopupAuthenticator.cc){
Address[] ccAdresses = new InternetAddress[PopupAuthenticator.cc.length];
for (int i=0; i<PopupAuthenticator.cc.length; i++){
ccAdresses[i] = new InternetAddress(PopupAuthenticator.cc[i]);
}
// 将抄送者信息设置到邮件信息中
message.setRecipients(Message.RecipientType.CC, ccAdresses);
}
if(null != addressBCC){
// message.addRecipient(Message.RecipientType.BCC, addressBCC);// 设置密件抄送
}
message.setContent(container,"utf-8"); // 添加 文本文件和附件
message.saveChanges();
Transport transport = session.getTransport("smtp");
// host,user,password
transport.connect("smtp.qq.com", PopupAuthenticator.mailuser,PopupAuthenticator.password);
Transport.send(message);
transport.close();
}catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}
}
public void beepForAnHour() {
TimerTask task = new TimerMask1();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date_str = null;
try {
date_str = sdf.parse("2011-01-28 10:35:00");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date date = date_str;
Timer timer = new Timer();
timer.schedule(task, date, 10000);
}
}
class TimerMask1 extends TimerTask {
public void run() {
java.sql.Time sTime = new java.sql.Time(new Date().getTime());
System.out.println("现在时间 " + sTime);
try {
new test().test_main();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
-----------------------------
注意:上面用的是QQ邮箱来发送的,所以要加上QQ的SMTP,而且要把QQ邮箱里的SMTP打开,打开可以参考 http://service.mail.qq.com/cgi-bin/help?subtype=1&no=166&id=28
不打开,就发不了
进入方法:google上输入“QQ邮箱”--登入--账户--POP3/IMAP/SMTP服务 中的 开启POP3/SMTP服务 打上勾 就可以了
分享到:
相关推荐
本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送多人以及添加多附件。 首先,你需要在项目中引入 JavaMail 的依赖。如果是 Maven 项目,可以在 `pom.xml` 文件中添加如下依赖: ```xml ...
"JavaMail多人发送电子邮件" JavaMail是一种常用的Java邮件处理库,通过使用JavaMail,可以轻松地发送电子邮件。在实际应用中,经常需要发送电子邮件给多个收件人,本文将介绍如何使用JavaMail实现给多人发送电子...
这个"Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip"的资源包含两个核心类:EmailManager.java和AnnexMailService.java,它们提供了一个强大的邮件发送功能,支持单个或多个附件,以及添加抄送人。下面将详细...
在IT行业中,电子邮件的收发是一项基础且重要的功能,尤其对于开发者来说,了解如何通过编程方式实现邮件的发送和接收是非常必要的。在这个例子中,我们将深入探讨如何利用James服务器和JavaMail API来实现这一目标...
在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...
使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...
这是我项目中自用的javamail,可通过定时任务自动发送邮件,可以发送多人,抄送多人(但没有测试过发送人的数量上限),可以带附件,邮件正文有一个表单,表单下面还嵌入了一张饼图的png图片,满足了一般的发送邮件...
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...
在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...
要实现定时发送邮件,我们可以结合 JavaMail 和 Java 计时器框架(如文中提到的 Java Timer)。以下是一个详细的步骤来实现这个功能: 1. **引入依赖**: 首先,你需要在你的项目中添加 JavaMail API 的依赖。如果...
本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...
在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: ...
10. **邮件验证**: 为了确保邮件成功发送,可以考虑添加邮件发送后的验证机制,比如通过返回确认消息或者向发件人发送一封确认邮件。 总的来说,这个JSP/Servlet邮件系统利用JavaMail API实现了发送多附件邮件的...
这个"发送多人邮件+多附件工具类"是为了解决这个问题而设计的,它可以帮助开发者便捷地向多个收件人发送带有多个附件的邮件。下面将详细讲解其中涉及的关键知识点。 1. JavaMail API: JavaMail API是Java中用于...
本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中发送和接收电子邮件。它提供了丰富的API,使得开发者可以方便地处理SMTP、POP3和IMAP等邮件协议。在JavaMail中,我们可以实现各种复杂的邮件功能,如添加附件...
JavaMail邮件发送(带附件)
这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...