知识大全 Java发邮件(email.jar)的方法
Posted 知
篇首语:我允许别人比我强,但我不允许我没有别人努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java发邮件(email.jar)的方法相关的知识,希望对你有一定的参考价值。
Java发邮件(email.jar)的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我想在公司每个项目中都会遇到发邮件的问题 这两周我都在公司做发邮件的东西 本以为很简单的东西 却遇到了很多问题 现总结到下面
发邮件我用的sun公司的email jar和activation jar
方法
写在一起用一个方法
public boolean SendEmailTest(String ToEmailStr String Title String Content String FromEmail) throws AddressException
//ToEmailStr收件人地址
//Title邮件标题
//Content邮件内容
//FromEmail发件人地址
FromEmail= ;
// System out println(FromEmail);
boolean fnt = false;
Properties props = new Properties();
Session sendMailSession;
Transport transport;
sendMailSession = Session getInstance(props null);
props put( mail smtp host ); // 是 的IP!
props put( mail smtp auth true ); //允许smtp校验
try
transport = sendMailSession getTransport( smtp );
nnect( chen ); //你在sohu的用户名 密码
Message newMessage = new MimeMessage(sendMailSession);
//设置mail主题
String mail_subject=Title;
sun misc BASE Encoder enc = new sun misc BASE Encoder();
newMessage setSubject( =?GB ?B? +enc encode(mail_subject getBytes())+ ?= );
// newMessage setSubject(mail_subject); //在winxp上只要在action中转成utf
//设置发信人地址
//String strFrom= cn ; // <
// strFrom=new String(strFrom getBytes() _ );
// newMessage setFrom(new InternetAddress(strFrom));
Address address[] = new InternetAddress(FromEmail);//改变发件人地址
newMessage addFrom(address);
//设置收件人地址
newMessage setRecipient(Message RecipientType TO new InternetAddress(ToEmailStr));
//设置mail正文
newMessage setSentDate(new java util Date());
String mail_text=Content;
newMessage setContent(mail_text text/plain;charset=gb );
// newMessage setText( =?GB ?B? +enc encode(mail_text getBytes())+ ?= );
//newMessage setText(mail_text);
newMessage saveChanges(); //保存发送信息
transport sendMessage(newMessage newMessage getRecipients(Message RecipientType TO)); //发送邮件
fnt=true;
transport close();
catch(Exception e)
fnt=false;
System out println(e);
System out println( aaaaaaaaaaaaa );
return fnt;
如果想分开哪么可以写成
import javax mail Authenticator;
import javax mail PasswordAuthentication;
public class Email_Autherticator extends Authenticator
String username = hackboyo ;//用户名
String password = woyao ;//密码
public Email_Autherticator()
super();
import java util Date;
import java util Properties;
import javax mail Address;
import javax mail Authenticator;
import javax mail Message;
import javax mail SendFailedException;
import javax mail Session;
import javax mail Transport;
import javax mail internet InternetAddress;
import javax mail internet MimeMessage;
public class Mail
private String host = ;
private String mail_head_name = this is head of this mail ;
private String mail_head_value = this is head of this mail ;
private String mail_to = ;
private String mail_from = ;
private String mail_subject = this is the subject of this test mail ;
private String mail_body = this is mail_body of this test mail ;
private String personalName = 我的邮件 ;
public void sendMail() throws SendFailedException
try
Properties props = new Properties();//获取系统环境
Authenticator auth = new Email_Autherticator();//进行邮件服务用户认证
props put( mail smtp host host);
props put( mail smtp auth true );
System out println(props);
Session session = Session getDefaultInstance(props auth);
//设置session 和邮件服务器进行通讯
MimeMessage message = new MimeMessage(session);
message setContent( Hello text/plain );//设置邮件格式
message setSubject(mail_subject);//设置邮件主题
message setText(mail_body);//设置邮件内容
message setHeader(mail_head_name mail_head_value);//设置邮件标题
message setSentDate(new Date());//设置邮件发送时期
Address address = new InternetAddress(mail_from personalName);
message setFrom(address);//设置邮件发送者的地址
Address toaddress = new InternetAddress(mail_to);//设置邮件接收者的地址
message addRecipient(Message RecipientType TO toaddress);
System out println(message);
Transport send(message);
System out println( Send Mail Ok! );
catch (Exception e)
e printStackTrace();
//return flag;
public Email_Autherticator(String user String pwd)
super();
username = user;
password = pwd;
public PasswordAuthentication getPasswordAuthentication()
return new PasswordAuthentication(username password);
====================其中遇到的问题以及解决方案=========================
发邮件收不到的问题
其中如果发送失败 一般是因为你的密码 用户名或者是smtp设置错误
smtp:QQ的是 的是 gmail的是
我觉得一般的邮箱应该都是 smtp 邮
props put( mail smtp auth true ); //允许smtp校验
以前的邮箱这个可以设成false但是现在的一般都不行的 都需要smtp校验
另外你有时用别的邮箱做代理会发现报错说使用 pop 的错误 因为现在很多邮箱的 pop 协议默认是关闭的
如果pop 协议关闭就不能用其做代理 我试着注册过 gmail 雅虎 qq的邮箱 都是注册后几周后才开通
而且qq的邮箱是邮箱开通后两周才能手懂开通pop 协议 在个人设置里有
关于乱码的问题 特别是移植的问题 这个问题困惑了我好几天
但最后还是找到了决绝方案
在winxp下
只要你的title和tent在后台发送前有转码基本就没有问题的 我的项目页面是用utf 在后台我又做了一下
转码 发送时基本是没又乱码的
在Linux下
我用的是在Linux下用的weblogic 在winxp下测试没问题的 但在Linux下会遇到很变态的乱码 大概是因为字符编码和传输编码(Content Transfer Encoding)的问题 最后看到一篇文章()才解决 解决方案
邮件的标题乱码解决 //设置mail主题
String mail_subject=Title;
sun misc BASE Encoder enc = new sun misc BASE Encoder();
newMessage setSubject( =?GB ?B? +enc encode(mail_subject getBytes())+ ?= );
如果是在winxp上只需要newMessage setSubject(mail_subject);就可以了
邮件的正文这样是不行的 解决方案是 String mail_text=Content;
newMessage setContent(mail_text text/plain;charset=gb );
而在winxp上只需要newMessage setText(mail_text);就可以了
剩下的就没有什么问题了 其余的都是很简单的问题 有时还会遇到 你发的邮件有的邮箱可以收到
可是有的邮箱收不到 我们公司的邮件服务器就是这样的 qq邮箱是收不到的 但问题我们还不知道
最后没办法 我就只有用qq邮箱代理了 但是用别的邮箱代理还是有问题的 因为我用循环测试时发现
cha138/Article/program/Java/hx/201311/26829相关参考
Java发送邮件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 记得曾经学习用javamail发
Java邮件开发与反垃圾邮件机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一JavaMai
java实现邮件的发送分享方法如下 publicclassPopupAuthenticatorextendsAuthenticator publicPasswordAuthentication
要实现邮箱的发送需要一个已知账号和密码的邮箱并且开通了STMPPOP服务常见主流邮箱邮件收取和发送popstmp服务配置汇总介绍一文中详细介绍了各个邮箱开通服务的步骤 &nb
cha138/Article/program/Java/JSP/201404/30613
基于SMTP的JAVA邮件发送程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这个程序没有使
利用JAVA向垃圾电子邮件宣战 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要计算机技术给我
怎么使用Java实现把邮件附件下载到本地 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这个功能
在Java中发送邮件的一个相当完善的脚本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! pack
用Java设计防病毒的电子邮件程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb