Java邮件发送程序(可以同时发给多个地址、可以带附件)_java

发送邮件的主程序

import java.util.Properties;
import common.util.Email_Autherticatorbean;
import javax.mail.Authenticator;
import javax.mail.internet.InternetAddress;
import org.apache.commons.lang.StringUtils;
import javax.mail.internet.MimeBodyPart;
import javax.mail.Multipart;
import javax.activation.FileDataSource;
import javax.mail.internet.MimeMultipart;
import javax.activation.DataHandler;
import javax.mail.internet.MimeUtility;
import java.util.Date;

/**
* 利用java.mail的邮件发送程序
*/

public class SendMailTest
{
  public static void main(String[] args)
  {
    String title = "titleTest";//所发送邮件的标题
    String from ="sir_znp@163.com";//从那里发送
    String sendTo[] = {"znp@163.net","sir_znp@163.com"};//发送到那里
    //邮件的文本内容,可以包含html标记则显示为html页面
    String content = "mail test!!!!!!<br><a href=#>aaa</a>";
    //所包含的附件,及附件的重新命名
    String fileNames[] = {"F:\\music\\text1.txt,text1.txt","F:\\music\\text2.txt,text2.txt"};
    try {
    //  MailSender mailsender = new MailSender();
      sendmail(title, from, sendTo, content, fileNames,"text/html;charset=gb2312");
      } catch (Exception ex) { ex.printStackTrace(); }
  }

  public static void sendmail(String subject, String from, String[] to, String text, String[] filenames,String mimeType) throws Exception
  {
    //ResourceBundle mailProps = ResourceBundle.getBundle("mail");   可以从配置文件读取相应的参数
    Properties props = new Properties();

    String smtp = "smtp.163.com";  //设置发送邮件所用到的smtp
    String servername = "sir_znp";
    String serverpaswd = "123";

    javax.mail.Session mailSession; //邮件会话对象
    javax.mail.internet.MimeMessage mimeMsg; //MIME邮件对象

    props = java.lang.System.getProperties(); //获得系统属性对象
    props.put("mail.smtp.host", smtp); //设置SMTP主机
    props.put("mail.smtp.auth", "true"); //是否到服务器用户名和密码验证
    //到服务器验证发送的用户名和密码是否正确
    Email_Autherticatorbean myEmailAuther = new Email_Autherticatorbean(servername, serverpaswd);
    //设置邮件会话
    mailSession = javax.mail.Session.getInstance(props, (Authenticator) myEmailAuther); 
    //设置传输协议
    javax.mail.Transport transport = mailSession.getTransport("smtp");
    //设置from、to等信息
    mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
    if (!StringUtils.isEmpty(from))
       {
         InternetAddress sentFrom = new InternetAddress(from);
         mimeMsg.setFrom(sentFrom);  //设置发送人地址
       }

    InternetAddress[] sendTo = new InternetAddress[to.length];
    for (int i = 0; i < to.length; i++)
       {
         System.out.println("发送到:" + to[i]);
         sendTo[i] = new InternetAddress(to[i]);
       }

    mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);
    mimeMsg.setSubject(subject, "gb2312");

    MimeBodyPart messageBodyPart1 = new MimeBodyPart();
    //messageBodyPart.setText(UnicodeToChinese(text));
    messageBodyPart1.setContent(text, mimeType);

    Multipart multipart = new MimeMultipart();//附件传输格式
    multipart.addBodyPart(messageBodyPart1);

    for (int i = 0; i < filenames.length; i++) {
      MimeBodyPart messageBodyPart2 = new MimeBodyPart();
      //选择出每一个附件名
      String filename = filenames[i].split(",")[0];
      System.out.println("附件名:" + filename);
      String displayname = filenames[i].split(",")[1];
      //得到数据源
      FileDataSource fds = new FileDataSource(filename);
      //得到附件本身并至入BodyPart
      messageBodyPart2.setDataHandler(new DataHandler(fds));
      //得到文件名同样至入BodyPart
      //messageBodyPart2.setFileName(displayname);
      // messageBodyPart2.setFileName(fds.getName());
      messageBodyPart2.setFileName(MimeUtility.encodeText(displayname));
      multipart.addBodyPart(messageBodyPart2);
    }
    mimeMsg.setContent(multipart);
    //设置信件头的发送日期
    mimeMsg.setSentDate(new Date());
    mimeMsg.saveChanges();
    //发送邮件
    transport.send(mimeMsg);
    transport.close();
  }

验证类
package common.util;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class Email_Autherticatorbean  extends Authenticator
{
private String m_username = null;
private String m_userpass = null;

public void setUsername(String username)
{
m_username = username;
}

public void setUserpass(String userpass)
{
m_userpass = userpass;
}

public Email_Autherticatorbean(String username, String userpass)
{
   super();
   setUsername(username);
   setUserpass(userpass);

}
public PasswordAuthentication getPasswordAuthentication()
{

  return new PasswordAuthentication(m_username,m_userpass);
}

时间: 2024-07-28 17:29:49

Java邮件发送程序(可以同时发给多个地址、可以带附件)_java的相关文章

用JavaMail API编写可带附件的邮件发送程序

程序 利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序.也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet. (没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath) 一.JavaMail中一些我们需要的类 1.Properties JavaMail需要Prop

java 邮件发送与带附件的实现方法

java 邮件发送与带附件的实现方法 java邮件发送也一样,可以实现传入的参数有port地址.密码.姓名.谁发.发给谁.主题.正文内容.smtp地址.发送类型 等功能. 方法一 简单的JavaMail邮件发送 dev.firnow.com    时间 : 2009-04-05  作者:匿名   编辑:sky 点击:  683 [ 评论 ] - -   import javax.mail.*; import java.util.*; import javax.mail.internet.*;  

Rails测试《十一》添加邮件发送程序及测试邮件发送程序

讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://guides.rubyonrails.org/action_mailer_basics.html中更加详细的介绍. 添加邮件发送程序 发送邮件要保证我们有目标邮箱,所以呢,我们的用户要有一个属性:email. 还是拿我的blog项目作为练习项目. 我们在用户注册的时候给他发一封邮件. 首先我们创建一个初

为什么我写的邮件发送程序中只能发送英文字符串,而发送的汉字用邮箱接收显示的是乱码,

问题描述 我写的邮件发送程序,是把邮件内容用UTF8转换成字节序列,然后通过NetworkStram发送出去.可我用邮箱接收发送的邮件时,英文字符串可以正确显示,汉字就显示的是乱码.帮解决下,谢谢~ 解决方案 解决方案二:那你再换成别的格式试试看,不要先转换!解决方案三:编码有问题,,换成GB2132试试解决方案四:用gb2312..简体中文一般用这个.

java邮件发送的实现_java

邮件是在日常生活中,这篇文章主要介绍了java实现基于SMTP发送邮件的方法,实例分析了java基于SMTP服务发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 1.写一个 MailSendProper 类封装需要的属性 import java.util.Properties; public class MailSendProper { private String Host ; //发送邮件服务器的ip private String Port ; //发送邮件服务器的端口号 p

基于JAVAMAIL包的邮件发送程序----kangkang

程序      JavaMail API 是一个用于阅读.编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它配置了各种因特网邮件协,包括SMTP .POP .IMAP和 MIME ,还包括相关的 NNTP .S/MIME 及其它协议.通常开发JavaMail 程序还需要有Sun 的JavaBeans Activation Framework (JAF ).JavaBeans Activation Framework 的运行很复杂,这里简单的说就是JavaMail 的

java 邮件发送

步骤1:pom.xml添加依赖项 1 <!--mail--> 2 3 <dependency> 4 <groupId>javax.mail</groupId> 5 <artifactId>mailapi</artifactId> 6 <version>1.4.2</version> 7 </dependency> 8 9 <dependency> 10 <groupId>ja

PL/SQL 下邮件发送程序

      对DBA而言,尽管在os级别下发送邮件是轻而易举的事情,然而很多时候我们也需要在PL/SQL中来发送邮件,比如监控job的执行状况等.本文根据网友(源作者未考证)的代码将其改装并封装到了package,感谢这位网友的无私奉献.文章首先给出演示调用该包发送邮件的情形后面给出了完整的代码.经测试Oracle 10g,Oracle 11g下均可用.关于os下发送邮件可参考:不可或缺的 sendEmail   1.调用SENDMAIL_PKG来发送邮件 gx_admin@SYBO2SZ> s

关于java邮件发送的程序

问题描述 packagecom.bjsxt.javamail;importjava.util.Properties;importjavax.mail.Address;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.AddressException;importjavax