发送带SMTP身份认证的电子邮件

摘要:
“+e);returnfalse;}try{mimeMsg=newMimeMessage;//创建MIME邮件对象mp=newMimeMultipart();retrytrue;}catch{System.err.println(”[SYS]未能创建MIME邮件目标!“+e”;returnfalse;}}publicvoisetNeedAuth{if{props=System.getProperties();}if{props.put;}else{props.put}public voisetNamePass{username=name;password=pass;}publicfooeansetSubject{try{mimeMsg.setSubject;returntrue;}catch{System.err.println(“[SYS]错误设置消息主题!”);returnfalse;}}publishboolean setBody{try{BodyPartbp=newMimeBodyPart();bp.setContent;mp.addBodyPart;returntrue;}catch{System.err.println!

需要两个包:javamail.jar和activation.jar.

SendAuthMail .java
-------------------------------------------------------------------------------------------------

package com.hanweb.jcms;

/**
 * 发送带SMTP身份认证的电子邮件
 * 整理 by longware
 */
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendAuthMail {

 private MimeMessage mimeMsg; //MIME邮件对象
 private Session session; //邮件会话对象
 private Properties props; //系统属性
 private boolean needAuth = false; //smtp是否需要认证
 private String username = ""; //smtp认证用户名和密码
 private String password = "";
 private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

 public SendAuthMail(String smtp) {
  setSmtpHost(smtp);
  createMimeMessage();
 }

 public void setSmtpHost(String hostName) {
  if (props == null) {
   props = System.getProperties(); //获得系统属性对象
  }
  props.put("mail.smtp.host", hostName); //设置SMTP主机
 }

 public boolean createMimeMessage() {
  try {
   session = Session.getDefaultInstance(props, null); //获得邮件会话对象
  } catch (Exception e) {
   System.err.println("[SYS] 获取邮件会话对象时发生错误!" + e);
   return false;
  }

  try {
   mimeMsg = new MimeMessage(session); //创建MIME邮件对象
   mp = new MimeMultipart();
   return true;
  } catch (Exception e) {
   System.err.println("[SYS] 创建MIME邮件对象失败!" + e);
   return false;
  }
 }

 public void setNeedAuth(boolean need) {
  if (props == null) {
   props = System.getProperties();
  }
  if (need) {
   props.put("mail.smtp.auth", "true");
  } else {
   props.put("mail.smtp.auth", "false");
  }
 }

 public void setNamePass(String name, String pass) {
  username = name;
  password = pass;
 }

 public boolean setSubject(String mailSubject) {
  try {
   mimeMsg.setSubject(mailSubject);
   return true;
  } catch (Exception e) {
   System.err.println("[SYS] 设置邮件主题发生错误!");
   return false;
  }
 }

 public boolean setBody(String mailBody) {
  try {
   BodyPart bp = new MimeBodyPart();
   bp.setContent(
     "<html><meta http-equiv=Content-Type content=text/html; charset=gb2312>"
       + mailBody + "</html>", "text/html;charset=gb2312");
   mp.addBodyPart(bp);
   return true;
  } catch (Exception e) {
   System.err.println("[SYS] 设置邮件正文时发生错误!" + e);
   return false;
  }
 }

 public boolean addAttachFile(String filename) {
  try {
   BodyPart bp = new MimeBodyPart();
   FileDataSource fileds = new FileDataSource(filename);
   bp.setDataHandler(new DataHandler(fileds));
   bp.setFileName(fileds.getName());
   mp.addBodyPart(bp);
   return true;
  } catch (Exception e) {
   System.err.println("[SYS] 增加邮件附件:'" + filename + "' 发生错误!" + e);
   return false;
  }
 }

 public boolean setFrom(String from) {
  try {
   mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 public boolean setTo(String to) {
  if (to == null) {
   return false;
  }
  try {
   mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
     .parse(to));
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 public boolean setCC(String cc) {
  if (cc == null) {
   return false;
  }
  try {
   mimeMsg.setRecipients(Message.RecipientType.CC,
     (Address[]) InternetAddress.parse(cc));
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 public boolean sendOut() {
  try {
   mimeMsg.setContent(mp);
   mimeMsg.saveChanges();

   Session mailSession = Session.getInstance(props, null);
   Transport transport = mailSession.getTransport("smtp");
   transport.connect((String) props.get("mail.smtp.host"), username,
     password);
   transport.sendMessage(mimeMsg, mimeMsg
     .getRecipients(Message.RecipientType.TO));
   //transport.send(mimeMsg);
   transport.close();
   return true;
  } catch (Exception e) {
   System.err.println("[SYS] 邮件发送失败!" + e);
   return false;
  }
 }
}

usage:
-------------------------------------------------------------------------------------------------
String strSMTP = "smtp.csdn.net";
String strSubject = "Test mail from javamail.";
String strBody = "<b>This is just a test.<b>";
String strFrom = "longware@csdn.net";
String strTo = "blog@csdn.net";
String strCC= "users@163.com";
String strUser = "yourName";
String strPassword = "yourPassword";
String strAttach = "c:\boot.ini";

SendAuthMail sm = new SendAuthMail(strSMTP);
sm.setNeedAuth(true);
sm.setNamePass(strUser,strPassword);
sm.setFrom(strFrom);
sm.setTo(strTo);
sm.setCC(strCC);
sm.setSubject(strSubject);
sm.setBody(strBody);
sm.addAttachFile(strAttach);
sm.sendOut();

方法很多,抛砖引玉了...

免责声明:文章转载自《发送带SMTP身份认证的电子邮件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenSUSE 安装 PostGIS 3 (Postgresql 13)Gearman分布式任务处理系统(一)基本介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JavaMail入门:创建纯文本、HTML格式的邮件

转自:http://haolloyin.blog.51cto.com/1177454/353849/ 在 http://java.sun.com/products/javamail/ 下载了 JavaMail 1.4.3 版本,如果所用 JDK 是 6.0 则不用再下载 activation 。下载得到的是 javamail-1.4.3.zip 的压缩包,...

Jenkins安装以及邮件配置

Jenkins介绍 Jenkins是一个java开发的、开源的、非常好用持续集成的工具,它能帮我们实现自动化部署环境、测试、打包等等的工作,还可以在构建任务成功或者失败之后给我们发邮件通知。 什么叫持续集成呢,就是能重复、持久的去运行一个任务。 Jenkins下载、安装 Jenkins的下载地址是https://jenkins.io/download/,下...

[转帖]CentOS下iRedMail安装配置

CentOS下iRedMail安装配置 中文名为艾瑞得邮件,由 rhms 项目更名而来。是针对 Linux 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套 shell 脚本,用于快速部署一套功能完善的邮件服务器解决方案 中文名为“艾瑞得邮件”,由 rhms 项目更名而来。是针对 Linux 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套...

Java邮件开发电子邮件的基本概念介绍

电子邮件用于网上的信心传递和交流,它是最重要的Internet服务之一。据统计Internet有30%的业务是电子邮件有关的。同时我们也不可否认它在我们的日常生活、工作办公方面扮演着很重要的角色。譬如:许多办公自动化项目(OA)中都要附带发送邮件的功能,如果还要使用OutLook等手工方式就不适合,在这个高速的时代,我们需要提供工作效率,让工作能够自动化。...

function邮件php smtp邮件发送代码

最近研究function邮件,稍微总结一下,以后继续补充: <?php error_reporting(E_ALL ^ E_NOTICE); ##########服务器参数设置################ $smtpserver = "smtp.163.com";//SMTP服务器 $smtpserverport = 25;//SMTP服务器端口...

Outlook无法更改邮件内容字体颜色详解

过去两年用一直Notes,最近开始改用Outlook2007,发现新邮件无法更改字体的颜色和格式,有些想强调的语句没有办法凸显,相信有些同学也遇到和我一样的问题。在这里把outlook邮件内容格式详细的说一下。 解决办法很简单:在Outlook -> Options -> 里面选中“HTML”。我们可以看到Outlook支持3类邮件内容格式:1...