JavaMail的问题啊。有源码可以直接运行啊。~麻烦大家看看啊~~~~~~~~~~~~~~~~~~~~~~~~ 本帖最后由 zlyperson 于 2011-04-09 21:03:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;import java.util.*;import java.net.*;import java.io.*;public class Wt { private static String SmtpHost = "smtp.sohu.com";// 发送邮件的smtp服务器 private static String MailUser = "xxxxx";// 发送邮件的用户名 private static String MailPwd = "xxxxx";// 发送邮件的密码 public Wt(boolean rFlag) { this.setSmtpHost(SmtpHost, smtpPort); this.setSmtpAuthentication(MailUser, MailPwd); } public static void main(String args[]) throws Exception { System.out.println("Start............."); long s = System.currentTimeMillis(); Wt mail = new Wt(false); mail.setFrom("xxxxxx");//自己邮箱地址 mail.setTo("xxxxx");// 邮件发送目的地 mail.setSubject("Test");//邮件标题 String Body = "";//邮件内容 for (int i = 0; i < 10; i++) { Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去"; } mail.setBody(Body); mail.send(); long e = System.currentTimeMillis(); System.out.println("send:end.............." + (e - s)); } /** * 发送邮件 */ public void send() { try { Properties server = new Properties(); if (this.smtpHost == null) { throw new NullPointerException("Please set SMTP host"); } else { server.put("mail.smtp.host", this.smtpHost); } server.put("mail.smtp.port", String.valueOf(this.smtpPort)); if (this.isAuthenticationSMTP) { server.put("mail.smtp.auth", "true"); } Session conn = Session.getInstance(server, null); MimeMessage msg = new MimeMessage(conn); if (this.from == null) { throw new NullPointerException("Please set FROM address"); } else { msg.setFrom(new InternetAddress(this.from)); } if (this.to != null) { msg.setRecipients(Message.RecipientType.TO, this.to); } if (this.cc != null) { msg.setRecipients(Message.RecipientType.CC, this.cc); } if (this.bcc != null) { msg.setRecipients(Message.RecipientType.BCC, this.bcc); } sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); msg.setSubject("=?GB2312?B?" + enc.encode(this.title.getBytes()) + "?="); if (!hasAttachment()) { // 如果没有带附件 if (this.isHtmlModeMail()) { // 是HTML格式的邮件 if (!this.hasHtmlDesc()) { msg.setContent(this.content, this.content_type); } else { Multipart mp = new MimeMultipart(); MimeBodyPart mbp = null; mbp = new MimeBodyPart(); mbp.setContent(this.content, this.content_type); mp.addBodyPart(mbp); mbp = new MimeBodyPart(); mbp.setContent(this.htmlMailDesc, this.MODE_TEXT); mp.addBodyPart(mbp); msg.setContent(mp); } } else { // 是文本格式的邮件 msg.setText(this.content); } } else { // 有附件 Multipart mp = new MimeMultipart(); MimeBodyPart mbp = null; // 邮件正文 for (int i = 0; i < vFiles.size(); i++) { mbp = new MimeBodyPart(); File file = (File) vFiles.get(i); FileDataSource fds = new FileDataSource(file); mbp.setDataHandler(new DataHandler(fds)); // mbp.setFileName(StringUtil.ISO8859_1(file.getName())); mbp.setFileName(file.getName()); mp.addBodyPart(mbp); } for (int i = 0; i < vURLs.size(); i++) { mbp = new MimeBodyPart(); URL url = (URL) vURLs.get(i); // URLDataSource uds=new URLDataSource(url); mbp.setDataHandler(new DataHandler(url)); // mbp.setFileName(StringUtil.ISO8859_1(url.getFile())); mbp.setFileName(url.getFile()); mp.addBodyPart(mbp); } mbp = new MimeBodyPart(); mbp.setContent(this.content, this.content_type); mp.addBodyPart(mbp); if (this.isHtmlModeMail() && this.hasHtmlDesc()) { mbp = new MimeBodyPart(); mbp.setContent(this.htmlMailDesc, this.MODE_TEXT); mp.addBodyPart(mbp); } msg.setContent(mp); } msg.saveChanges(); if (this.isAuthenticationSMTP) { Transport transport = conn.getTransport("smtp"); transport.connect(this.smtpHost, this.smtpUser, this.smtpPassword); transport.sendMessage(msg, msg.getAllRecipients()); transport.close(); } else { Transport.send(msg, msg.getAllRecipients()); } } catch (javax.mail.internet.AddressException e) { e.printStackTrace(); } catch (javax.mail.MessagingException e) { e.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } public boolean isValidEmailAddress(String email) { if (email == null) return false; if (email.indexOf("@") > 0) return !email.endsWith("@"); return false; } private Address[] getAddress(String[] add) { Address[] a = new Address[add.length]; for (int i = 0; i < add.length; i++) { try { a[i] = new InternetAddress(add[i]); } catch (AddressException ex) { ex.printStackTrace(); } } return a; } public boolean isHtmlModeMail() { return this.content_type.equals(this.MODE_HTML); } public boolean hasHtmlDesc() { if (!this.isHtmlModeMail()) return false; return !(this.htmlMailDesc == null); } public static final String MODE_HTML = "text/html;charset=gb2312"; /** * 普通模式 */ public static final String MODE_TEXT = "text/plain;charset=gb2312"; /** * HTML模式 */ private Address[] to = null; private Address[] cc = null; private Address[] bcc = null; private String from = ""; private String title = ""; private String content = ""; private String smtpHost = ""; private int smtpPort = 25; private String content_type = MODE_TEXT; private String htmlMailDesc = ""; private String smtpUser = ""; private String smtpPassword = ""; private boolean isAuthenticationSMTP = true; private Vector vFiles = new Vector(); private Vector vURLs = new Vector(); public Wt() { } /** * 设置SMTP服务器,使用默认端口 * * @param server * SMTP服务器IP */ public void setSmtpHost(String server) { this.smtpHost = server; } /** * 设置SMTP服务器 * * @param server * SMTP服务器IP * @param port * 端口 */ public void setSmtpHost(String server, int port) { this.smtpHost = server; this.smtpPort = port; } /** * 设置收件人地址 * * @param aEmail * 收件人Email地址 */ public void setTo(String aEmail) { String[] s = new String[1]; s[0] = aEmail; this.to = getAddress(s); } /** * 设置多个收件人地址 * * @param Emails * 收件人Email地址 */ public void setTo(String[] Emails) { this.to = getAddress(Emails); } /** * 设置抄送地址 * * @param aEmail * 抄送地址 */ public void setCC(String aEmail) { String[] s = new String[1]; s[0] = aEmail; this.cc = getAddress(s); } /** * 设置多个抄送地址 * * @param Emails * 抄送地址 */ public void setCC(String[] Emails) { this.cc = getAddress(Emails); } /** * 设置暗送地址 * * @param Emails * 暗送地址 */ public void setBCC(String aEmail) { String[] s = new String[1]; s[0] = aEmail; this.bcc = getAddress(s); } /** * 设置多个暗送地址 * * @param Emails * 暗送地址 */ public void setBCC(String[] Emails) { this.bcc = getAddress(Emails); } /** * 设置发件人地址 * * @param aEmail * 发件人地址 */ public void setFrom(String aEmail) { // if(!isValidEmailAddress(aEmail)){ // throw new MyException("Invalid Email Address"); // } this.from = aEmail; } /** * 设置邮件主题 * * @param mailTitle * 邮件主题 */ public void setSubject(String mailTitle) { this.title = mailTitle; } /** * 设置邮件文字内容 * * @param mailContent * 邮件文字内容 */ public void setBody(String mailContent) { this.content = mailContent; } /** * 设置邮件字符类型 * * @param contentType * 请从静态变量TEXT和HTML中选择 */ public void setContentType(String contentType) { this.content_type = contentType; } /** * 设置HTML格式邮件在一般模式下显示的说明 * * @param desc * 说明文字 */ public void setHtmlMailDesc(String desc) { this.htmlMailDesc = desc; } /** * 设置SMTP服务器用户认证 * * @param username * 用户名 * @param password * 密码 */ public void setSmtpAuthentication(String username, String password) { this.smtpUser = username; this.smtpPassword = password; this.isAuthenticationSMTP = true; } /** * 添加附件 * * @param afile * 本地文件 */ public void addAttachment(File afile) { vFiles.add(afile); } /** * 添加附件 * * @param fileURL * 文件URL */ public void addAttachment(URL fileURL) { vURLs.add(fileURL); } /** * 标示邮件是否附带附件 * * @return */ public boolean hasAttachment() { return vFiles.size() + vURLs.size() > 0; }} 不好意思啊。。应该是3000那个是我测试什么时候是阀值用的啊。我的实际内容是15k就不能发发送了。但是我用foxmail却可以发啊 String Body = "";//邮件内容 for (int i = 0; i < 10000; i++) {//这里应该是10000 Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去"; } mail.setBody(Body); 现在java发邮件有两种啊,一种是jmail,还有一种是Apache新出的插件,很强大,也比这个简单。可以收发邮件啊 我用腾讯的邮箱 过了 String Body = ""; for (int i = 0; i < 10000; i++) { Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去"+i; } 个人感觉好像和邮件服务器有关系。我用了163和qq的,163的不行,qq没问题 JPanel画图问题 转编码啊,请大家帮帮我 调用自定义异常类的问题。 菜鸟提问,File类的问题。 APPLET中有函数使浏览器打开一个网页么 关于Java和Shell 数据插入问题 不好意思,我是菜青虫!#¥%¥%……—*() 请问下面这个程序在jb中怎么运行? 请教java的调试技术,并请推荐几个比较好的资料! 为什么会出现nullpointexception 错误? 为什么出现“需要为class、interface或enum”错误
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
import java.net.*;
import java.io.*;
public class Wt { private static String SmtpHost = "smtp.sohu.com";// 发送邮件的smtp服务器 private static String MailUser = "xxxxx";// 发送邮件的用户名 private static String MailPwd = "xxxxx";// 发送邮件的密码 public Wt(boolean rFlag) { this.setSmtpHost(SmtpHost, smtpPort); this.setSmtpAuthentication(MailUser, MailPwd); } public static void main(String args[]) throws Exception { System.out.println("Start............."); long s = System.currentTimeMillis(); Wt mail = new Wt(false); mail.setFrom("xxxxxx");//自己邮箱地址
mail.setTo("xxxxx");// 邮件发送目的地 mail.setSubject("Test");//邮件标题 String Body = "";//邮件内容
for (int i = 0; i < 10; i++) {
Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去";
} mail.setBody(Body); mail.send(); long e = System.currentTimeMillis(); System.out.println("send:end.............." + (e - s));
} /**
* 发送邮件
*/
public void send() {
try {
Properties server = new Properties();
if (this.smtpHost == null) {
throw new NullPointerException("Please set SMTP host");
} else {
server.put("mail.smtp.host", this.smtpHost);
}
server.put("mail.smtp.port", String.valueOf(this.smtpPort));
if (this.isAuthenticationSMTP) {
server.put("mail.smtp.auth", "true");
} Session conn = Session.getInstance(server, null); MimeMessage msg = new MimeMessage(conn);
if (this.from == null) {
throw new NullPointerException("Please set FROM address");
} else {
msg.setFrom(new InternetAddress(this.from));
}
if (this.to != null) {
msg.setRecipients(Message.RecipientType.TO, this.to);
} if (this.cc != null) {
msg.setRecipients(Message.RecipientType.CC, this.cc);
}
if (this.bcc != null) {
msg.setRecipients(Message.RecipientType.BCC, this.bcc);
} sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?" + enc.encode(this.title.getBytes())
+ "?="); if (!hasAttachment()) {
// 如果没有带附件
if (this.isHtmlModeMail()) {
// 是HTML格式的邮件
if (!this.hasHtmlDesc()) {
msg.setContent(this.content, this.content_type);
} else {
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = null; mbp = new MimeBodyPart();
mbp.setContent(this.content, this.content_type);
mp.addBodyPart(mbp); mbp = new MimeBodyPart();
mbp.setContent(this.htmlMailDesc, this.MODE_TEXT);
mp.addBodyPart(mbp); msg.setContent(mp);
}
} else {
// 是文本格式的邮件
msg.setText(this.content);
} } else {
// 有附件
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = null;
// 邮件正文
for (int i = 0; i < vFiles.size(); i++) {
mbp = new MimeBodyPart();
File file = (File) vFiles.get(i);
FileDataSource fds = new FileDataSource(file);
mbp.setDataHandler(new DataHandler(fds));
// mbp.setFileName(StringUtil.ISO8859_1(file.getName()));
mbp.setFileName(file.getName());
mp.addBodyPart(mbp);
}
for (int i = 0; i < vURLs.size(); i++) {
mbp = new MimeBodyPart();
URL url = (URL) vURLs.get(i);
// URLDataSource uds=new URLDataSource(url);
mbp.setDataHandler(new DataHandler(url));
// mbp.setFileName(StringUtil.ISO8859_1(url.getFile()));
mbp.setFileName(url.getFile());
mp.addBodyPart(mbp);
} mbp = new MimeBodyPart();
mbp.setContent(this.content, this.content_type);
mp.addBodyPart(mbp); if (this.isHtmlModeMail() && this.hasHtmlDesc()) {
mbp = new MimeBodyPart();
mbp.setContent(this.htmlMailDesc, this.MODE_TEXT);
mp.addBodyPart(mbp);
} msg.setContent(mp);
}
msg.saveChanges();
if (this.isAuthenticationSMTP) {
Transport transport = conn.getTransport("smtp");
transport.connect(this.smtpHost, this.smtpUser,
this.smtpPassword);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} else {
Transport.send(msg, msg.getAllRecipients());
} } catch (javax.mail.internet.AddressException e) {
e.printStackTrace();
} catch (javax.mail.MessagingException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
} public boolean isValidEmailAddress(String email) {
if (email == null)
return false;
if (email.indexOf("@") > 0)
return !email.endsWith("@");
return false;
} private Address[] getAddress(String[] add) {
Address[] a = new Address[add.length];
for (int i = 0; i < add.length; i++) {
try {
a[i] = new InternetAddress(add[i]);
} catch (AddressException ex) {
ex.printStackTrace();
}
}
return a;
} public boolean isHtmlModeMail() {
return this.content_type.equals(this.MODE_HTML);
} public boolean hasHtmlDesc() {
if (!this.isHtmlModeMail())
return false;
return !(this.htmlMailDesc == null);
} public static final String MODE_HTML = "text/html;charset=gb2312"; /**
* 普通模式
*/
public static final String MODE_TEXT = "text/plain;charset=gb2312"; /**
* HTML模式
*/ private Address[] to = null; private Address[] cc = null; private Address[] bcc = null; private String from = ""; private String title = ""; private String content = ""; private String smtpHost = ""; private int smtpPort = 25; private String content_type = MODE_TEXT; private String htmlMailDesc = ""; private String smtpUser = ""; private String smtpPassword = ""; private boolean isAuthenticationSMTP = true; private Vector vFiles = new Vector(); private Vector vURLs = new Vector(); public Wt() {
} /**
* 设置SMTP服务器,使用默认端口
*
* @param server
* SMTP服务器IP
*/
public void setSmtpHost(String server) {
this.smtpHost = server;
} /**
* 设置SMTP服务器
*
* @param server
* SMTP服务器IP
* @param port
* 端口
*/
public void setSmtpHost(String server, int port) {
this.smtpHost = server;
this.smtpPort = port;
} /**
* 设置收件人地址
*
* @param aEmail
* 收件人Email地址
*/
public void setTo(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.to = getAddress(s);
} /**
* 设置多个收件人地址
*
* @param Emails
* 收件人Email地址
*/
public void setTo(String[] Emails) {
this.to = getAddress(Emails);
} /**
* 设置抄送地址
*
* @param aEmail
* 抄送地址
*/
public void setCC(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.cc = getAddress(s);
} /**
* 设置多个抄送地址
*
* @param Emails
* 抄送地址
*/
public void setCC(String[] Emails) {
this.cc = getAddress(Emails);
} /**
* 设置暗送地址
*
* @param Emails
* 暗送地址
*/ public void setBCC(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.bcc = getAddress(s);
} /**
* 设置多个暗送地址
*
* @param Emails
* 暗送地址
*/
public void setBCC(String[] Emails) {
this.bcc = getAddress(Emails);
} /**
* 设置发件人地址
*
* @param aEmail
* 发件人地址
*/
public void setFrom(String aEmail) {
// if(!isValidEmailAddress(aEmail)){
// throw new MyException("Invalid Email Address");
// }
this.from = aEmail;
} /**
* 设置邮件主题
*
* @param mailTitle
* 邮件主题
*/
public void setSubject(String mailTitle) {
this.title = mailTitle;
} /**
* 设置邮件文字内容
*
* @param mailContent
* 邮件文字内容
*/
public void setBody(String mailContent) {
this.content = mailContent;
} /**
* 设置邮件字符类型
*
* @param contentType
* 请从静态变量TEXT和HTML中选择
*/
public void setContentType(String contentType) {
this.content_type = contentType;
} /**
* 设置HTML格式邮件在一般模式下显示的说明
*
* @param desc
* 说明文字
*/
public void setHtmlMailDesc(String desc) {
this.htmlMailDesc = desc;
} /**
* 设置SMTP服务器用户认证
*
* @param username
* 用户名
* @param password
* 密码
*/
public void setSmtpAuthentication(String username, String password) {
this.smtpUser = username;
this.smtpPassword = password;
this.isAuthenticationSMTP = true; } /**
* 添加附件
*
* @param afile
* 本地文件
*/
public void addAttachment(File afile) {
vFiles.add(afile);
} /**
* 添加附件
*
* @param fileURL
* 文件URL
*/
public void addAttachment(URL fileURL) {
vURLs.add(fileURL);
} /**
* 标示邮件是否附带附件
*
* @return
*/
public boolean hasAttachment() {
return vFiles.size() + vURLs.size() > 0;
}}
我的实际内容是15k就不能发发送了。但是我用foxmail却可以发啊
String Body = "";//邮件内容
for (int i = 0; i < 10000; i++) {//这里应该是10000
Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去";
} mail.setBody(Body);
String Body = "";
for (int i = 0; i < 10000; i++) {
Body += "内容多了就发不出去了,但是用Foxmail同样长的却可以发出去"+i;
}