• 161013、java实现邮件群发带附件


    要完成Java群发邮件功能,首先须加入mail.jar和activation.jar这两个包
    
    
    
    下面是邮件的例子:
    
    import java.io.File;
    import java.util.Properties;
    import java.util.Vector;
    import javax.mail.internet.MimeUtility;
    /**
    * 发送邮件的信息类
    * @author 仇志鹏
    * @version 2016.10.19
    *
    */
    public class MailSenderInfo {
    // 发送邮件的服务器的IP和端口
    private String mailServerHost;
    private String mailServerPort = “25”;
    // 邮件发送者的地址
    private String fromAddress;
    // 邮件接收者的地址
    private String[] toAddress;
    // 登陆邮件发送服务器的用户名和密码
    private String userName;
    private String password;
    // 是否需要身份验证
    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String content;
    // 邮件附件的文件名
    private String fileName = “” ;
    //附件文件集合
    private Vector file = new Vector() ;
    
    /**
    * 获得邮件会话属性
    * @return
    */
    public Properties getProperties(){
    Properties p = new Properties();
    p.put(“mail.smtp.host”, this.mailServerHost);
    p.put(“mail.smtp.port”, this.mailServerPort);
    p.put(“mail.smtp.auth”, validate ? “true” : “false”);
    return p;
    }
    public String getMailServerHost() {
    return mailServerHost;
    }
    public void setMailServerHost(String mailServerHost) {
    this.mailServerHost = mailServerHost;
    }
    public String getMailServerPort() {
    return mailServerPort;
    }
    public void setMailServerPort(String mailServerPort) {
    this.mailServerPort = mailServerPort;
    }
    public boolean isValidate() {
    return validate;
    }
    public void setValidate(boolean validate) {
    this.validate = validate;
    }
    public String getFromAddress() {
    return fromAddress;
    }
    public void setFromAddress(String fromAddress) {
    this.fromAddress = fromAddress;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public String[] getToAddress() {
    return toAddress;
    }
    public void setToAddress(String[] toAddress) {
    this.toAddress = toAddress;
    }
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public String getSubject() {
    return subject;
    }
    public void setSubject(String subject) {
    this.subject = subject;
    }
    public String getContent() {
    return content;
    }
    public void setContent(String textContent) {
    this.content = textContent;
    }
    public String getFileName() {
    return fileName;
    }
    public void setFileName(String fileName) {
    this.fileName = fileName;
    }
    public Vector getFile() {
    return file;
    }
    public void setFile(Vector file) {
    this.file = file;
    }
    /**
    *
    * 方法说明:把主题转换为中文
    * 输入参数:String strText
    * 返回类型:
    */
    public String transferChinese(String strText) {
    try {
    strText = MimeUtility.encodeText(new String(strText.getBytes(),
    “GB2312”), “GB2312”, “B”);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return strText;
    }
    }
    ———————————————————
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
    /**
    * 发邮件的身份验证器
    * @author 仇志鹏
    * @version 2016.10.19
    *
    */
    public class MyAuthenticator extends Authenticator{
    String userName=null;
    String password=null;
    
    public MyAuthenticator(){
    
    }
    public MyAuthenticator(String username, String password) {
    this.userName = username;
    this.password = password;
    }
    protected PasswordAuthentication getPasswordAuthentication(){
    return new PasswordAuthentication(userName, password);
    }
    }
    ———————————————————————
    import java.io.File;
    import java.util.Date;
    import java.util.Enumeration;
    import java.util.Properties;
    import java.util.Vector;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Address;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    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;
    
    public class SimpleMailSender {
    /** *//**
    * 以文本格式发送邮件
    * @param mailInfo 待发送的邮件的信息
    */
    public boolean sendTextMail(MailSenderInfo mailInfo) {
    // 判断是否需要身份认证
    MyAuthenticator authenticator = null;
    Properties pro = mailInfo.getProperties();
    if (mailInfo.isValidate()) {
    // 如果需要身份认证,则创建一个密码验证器
    authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
    }
    // 根据邮件会话属性和密码验证器构造一个发送邮件的session
    Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
    try {
    // 根据session创建一个邮件消息
    Message mailMessage = new MimeMessage(sendMailSession);
    // 创建邮件发送者地址 authenticator
    Address from = new InternetAddress(mailInfo.getFromAddress());
    // 设置邮件消息的发送者
    mailMessage.setFrom(from);
    // 创建邮件的接收者地址,并设置到邮件消息中
    String[] mailToAddress = mailInfo.getToAddress() ;
    int len = mailToAddress.length ;
    Address to[] = new InternetAddress[len] ;
    for(int i=0;i<len;i++){
    to[i] = new InternetAddress(mailToAddress[i]) ;
    }
    // Message.RecipientType.TO属性表示接收者的类型为TO
    //TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。
    mailMessage.setRecipients(Message.RecipientType.TO,to);
    // 设置邮件消息的主题
    mailMessage.setSubject(mailInfo.getSubject());
    // 设置邮件消息发送的时间
    mailMessage.setSentDate(new Date());
    // 设置邮件消息的主要内容
    String mailContent = mailInfo.getContent();
    mailMessage.setText(mailContent);
    // 发送邮件
    Transport.send(mailMessage);
    return true;
    } catch (MessagingException ex) {
    ex.printStackTrace();
    }
    return false;
    }
    
    /** *//**
    * 以HTML格式发送邮件
    * @param mailInfo 待发送的邮件信息
    */
    public boolean sendHtmlMail(MailSenderInfo mailInfo){
    // 判断是否需要身份认证
    MyAuthenticator authenticator = null;
    Properties pro = mailInfo.getProperties();
    //如果需要身份认证,则创建一个密码验证器
    if (mailInfo.isValidate()) {
    authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
    }
    // 根据邮件会话属性和密码验证器构造一个发送邮件的session
    Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
    try {
    // 根据session创建一个邮件消息
    Message mailMessage = new MimeMessage(sendMailSession);
    // 创建邮件发送者地址
    Address from = new InternetAddress(mailInfo.getFromAddress());
    // 设置邮件消息的发送者
    mailMessage.setFrom(from);
    // 创建邮件的接收者地址,并设置到邮件消息中
    String[] mailToAddress = mailInfo.getToAddress() ;
    int len = mailToAddress.length ;
    Address to[] = new InternetAddress[len] ;
    for(int i=0;i<len;i++){
    to[i] = new InternetAddress(mailToAddress[i]) ;
    }
    // Message.RecipientType.TO属性表示接收者的类型为TO
    //mailMessage.setRecipient(Message.RecipientType.TO, to) ;
    mailMessage.setRecipients(Message.RecipientType.TO,to);
    // 设置邮件消息的主题
    mailMessage.setSubject(mailInfo.getSubject());
    // 设置邮件消息发送的时间
    mailMessage.setSentDate(new Date());
    // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
    Multipart mainPart = new MimeMultipart();
    // 创建一个包含HTML内容的MimeBodyPart
    BodyPart html = new MimeBodyPart();
    // 设置HTML内容
    html.setContent(mailInfo.getContent(), “text/html; charset=utf-8″);
    mainPart.addBodyPart(html);
    //向multipart中添加附件
    Vector file = mailInfo.getFile() ;
    String fileName = mailInfo.getFileName() ;
    Enumeration efile = file.elements() ;
    while(efile.hasMoreElements()){
    MimeBodyPart mdpFile = new MimeBodyPart() ;
    fileName = efile.nextElement().toString() ;
    FileDataSource fds = new FileDataSource(fileName) ;
    mdpFile.setDataHandler(new DataHandler(fds)) ;
    //这个方法可以解决乱码问题
    String fileName1 = new String(fds.getName().getBytes(),”ISO-8859-1”) ;
    mdpFile.setFileName(fileName1) ;
    mainPart.addBodyPart(mdpFile) ;
    }
    file.removeAllElements() ;
    // 将MiniMultipart对象设置为邮件内容
    mailMessage.setContent(mainPart);
    // 发送邮件
    Transport.send(mailMessage);
    return true;
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    return false;
    }
    }
    ————————————————————————————–
    import java.io.File;
    import java.util.Vector;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    public class SendMail {
    public static void main(String[] args) {
    try {
    MailSenderInfo mailInfo = new MailSenderInfo();
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    
    // 设置邮件服务器类型 smtp.qq.com smtp.exmail.qq.com
    mailInfo.setMailServerHost(“smtp.qq.com”);
    //设置端口号 25
    mailInfo.setMailServerPort(“587”);
    //设置是否验证
    mailInfo.setValidate(true);
    //设置用户名、密码、发送人地址
    mailInfo.setUserName(“1909083200”); // 不用带@qq.com
    mailInfo.setPassword(“dolsgbvwttttchhd”);// 这个是在邮箱中获取的授权码
    mailInfo.setFromAddress(“1909083200@qq.com”); //这个必须填完整
    /**
    * 附件
    */
    Vector file = new Vector() ;
    File f1 = new File(“d:/1.txt”) ;
    file.add(f1) ;
    mailInfo.setFile(file) ;
    /**
    * 收件人邮箱
    * wuhaixu449261417@sina.com
    */
    String[] mailToAddress = {“gentlemango@vip.qq.com”} ;
    mailInfo.setToAddress(mailToAddress);
    mailInfo.setSubject(“测试”);
    mailInfo.setContent(“注册地址 百度“);
    // 这个类主要来发送邮件
    SimpleMailSender sms = new SimpleMailSender();
    // sms.sendTextMail(mailInfo);// 发送文体格式
    if(sms.sendHtmlMail(mailInfo)){
    System.out.println(“mail send True!”);
    }// 发送html格式
    else{
    System.out.println(“mail send False!”);
    }
    } catch (Exception e) {
    e.printStackTrace() ;
    }
    }
    }
    
    以上实现了javamail的群发送功能。
    

      

  • 相关阅读:
    如何把phpStorm打造成自己的专属IDE?
    PHP伪造referer突破网盘禁止外链(附115源码)
    PHP实现删除非站内外部链接实例代码
    Http Referer的一些总结
    jquery 选择器(name,属性,元素)大全
    Invoke 和 BeginInvoke 的真正涵义
    C# HashSet集合类型使用介绍
    Dev系列控件的AJAX使用Demo
    如何进行SVN数据迁移并保存版本号数据
    Window及document对象
  • 原文地址:https://www.cnblogs.com/zrbfree/p/5980106.html
Copyright © 2020-2023  润新知