Java群发邮件.doc_第1页
Java群发邮件.doc_第2页
Java群发邮件.doc_第3页
Java群发邮件.doc_第4页
Java群发邮件.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。进行下载,并将mail.jar添加到classpath即可。如果你使用的是JAVA EE SDK,则可以在C:glassfishv3glassfishmodulesmail.jar找到所需的jar包,同样需要添加的classpath。2、 JAVA邮件发送的大致过程是这样的的:3、 构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。4、 构建一个properties文件,该文件中存放SMTP服务器地址等参数。5、 通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。6、 构建邮件内容,一般是ernet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。7、 使用javax.mail.Transport工具类发送邮件。具体实现:首先是继承自javax.mail.Authenticator的一个具体类。 package com.mzule.simplemail; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /* * 服务器邮箱登录验证 * * author MZULE * */ public class MailAuthenticator extends Authenticator /* * 用户名(登录邮箱) */ private String username; /* * 密码 */ private String password; /* * 初始化邮箱和密码 * * param username 邮箱 * param password 密码 */ public MailAuthenticator(String username, String password) this.username = username; this.password = password; String getPassword() return password; Override protected PasswordAuthentication getPasswordAuthentication() return new PasswordAuthentication(username, password); String getUsername() return username; public void setPassword(String password) this.password = password; public void setUsername(String username) this.username = username; 邮件发送类,剩下的步骤都是在这个类实现的。代码中的SimpleMail是封装了邮件主题和内容的一个POJO。觉得在一个方法参数中既包含主题又包含内容,不太合适,故重载了此方法。还有就是因为大多数邮箱的SMTP服务器地址都是可以通过邮箱地址算出来,简单起见,提供了一个不需要SMTP服务器地址的构造器。 package com.mzule.simplemail; import java.util.List; import java.util.Properties; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import ernet.AddressException; import ernet.InternetAddress; import ernet.MimeMessage; import ernet.MimeMessage.RecipientType; /* * 简单邮件发送器,可单发,群发。 * * author MZULE * */ public class SimpleMailSender /* * 发送邮件的props文件 */ private final transient Properties props System.getProperties(); /* * 邮件服务器登录验证 */ private transient MailAuthenticator authenticator; /* * 邮箱session */ private transient Session session; /* * 初始化邮件发送器 * * param smtpHostName * SMTP邮件服务器地址 * param username * 发送邮件的用户名(地址) * param password * 发送邮件的密码 */ public SimpleMailSender(final String smtpHostName, final String username, final String password) init(username, password, smtpHostName); /* * 初始化邮件发送器 * * param username * 发送邮件的用户名(地址),并以此解析SMTP服务器地址 * param password * 发送邮件的密码 */ public SimpleMailSender(final String username, final String password) /通过邮箱地址解析出smtp服务器,对大多数邮箱都管用 final String smtpHostName = smtp. username.split()1; init(username, password, smtpHostName); /* * 初始化 * * param username * 发送邮件的用户名(地址) * param password * 密码 * param smtpHostName * SMTP主机地址 */ private void init(String username, String password, String smtpHostName) / 初始化props props.put(mail.smtp.auth, true); props.put(mail.smtp.host, smtpHostName); / 验证 authenticator = new MailAuthenticator(username,password); / 创建session session = Session.getInstance(props, authenticator); /* * 发送邮件 * * param recipient * 收件人邮箱地址 * param subject * 邮件主题 * param content * 邮件内容 * throws AddressException * throws MessagingException */ public void send(String recipient, String subject, Object content) throws AddressException, MessagingException / 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); / 设置发信人 message.setFrom(new InternetAddress(authenticator.getUsername(); / 设置收件人 message.setRecipient(RecipientType.TO, new InternetAddress(recipient); / 设置主题 message.setSubject(subject); / 设置邮件内容 message.setContent(content.toString(), text/html;charset=utf-8); / 发送 Transport.send(message); /* * 群发邮件 * * param recipients * 收件人们 * param subject * 主题 * param content * 内容 * throws AddressException * throws MessagingException */ public void send(List recipients, String subject, Object content) throws AddressException, MessagingException / 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); / 设置发信人 message.setFrom(new InternetAddress(authenticator.getUsername(); / 设置收件人们 final int num = recipients.size(); InternetAddress addresses = new InternetAddressnum; for (int i = 0; i num; i+) addressesi = new InternetAddress(recipients.get(i); message.setRecipients(RecipientType.TO, addresses); / 设置主题 message.setSubject(subject); / 设置邮件内容 message.setContent(content.toString(), text/html;charset=utf-8); / 发送 Transport.send(message); /* * 发送邮件 * * param recipient * 收件人邮箱地址 * param mail * 邮件对象 * throws AddressException * throws MessagingException */ public void send(String recipient, SimpleMail mail) throws AddressException, MessagingException send(recipient, mail.getSubject(), mail.getContent(); /* * 群发邮件 * * param recipients * 收件人们 * param mail * 邮件对 * throws AddressException * throws MessagingException */ public void send(List recipients, SimpleMail mail) throws AddressException, MessagingException send(recipients, mail.getSubject(), mail.getContent(); 调用上面的邮箱发送器,可以构建一个工厂类,工厂类可以封装创建的过程,所以通过读配置文件获取邮箱用户名,密码都会变得十分方便。下面的代码是我在写观察者模式的时候写的,只是简单演示了工厂类。 package com.mzule.dp.observer.factory; import com.mzule.dp.observer.constant.MailSenderType; import com.mzule.simplemail.SimpleMailSender; /* * 发件箱工厂 * * author MZULE * */ public class MailSenderFactory /* * 服务邮箱 */ private static SimpleMailSender serviceSms = null; /* * 获取邮箱 * * param type 邮箱类型 * return 符合类型的邮箱 */ public static SimpleMailSender getSender(MailSenderType type) if (type = MailSenderType.SERVICE) if (serviceSms = null) serviceSms = new SimpleMailSender(, hidden); return serviceSms; return null; 发送邮件,还是观察者模式DEMO里面的代码,呼呼。 package com.mzule.dp.observer.observer; import java.util.ArrayList; import java.util.List; import java.util.Observable; import java.util.Observer; import javax.mail.MessagingException; import ernet.AddressException; import com.mzule.dp.observer.constant.MailSenderType; import com.mzule.dp.observer.factory.MailSenderFactory; import com.mzule.dp.observer.po.Product; import com.mzule.simplemail.SimpleMailSender; public class ProductPriceObserver implements Observer Override public v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论