关于java mail 代码应该没问题是 msg.setFrom(new InternetAddress("sgr"));这句出错吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的说的对,new InternetAddress("sgr"));中的参数sgr应该是一个有效的邮件地址。你的是非法的,你该成如下:new InternetAddress("[email protected]"));就可以了。 我这样写只是随便举个例子,而且new InternetAddress("sgr"));是不会出错的。在Mail中是FROM:sgr<smtp服务器的address>。请各位试试 我在另一个程序中这样试过,是可以的但我找不出两段代码那里不同。正确代码:package mymail;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.activation.FileDataSource;import javax.mail.internet.MimeBodyPart;import javax.mail.Multipart;import javax.mail.internet.MimeMessage;import javax.activation.DataHandler;import javax.mail.MessagingException;import javax.mail.internet.MimeMultipart;import javax.mail.internet.InternetAddress;import javax.mail.Transport;import java.util.Date;import javax.mail.Message;public class mailOperation extends baseMail{ /** 存放session属性(smtp服务器属性) */ private SmtpAuth sa = null; /** 存放session属性(smtp用户验证属性) */ private Properties props = null; /** 确定邮件会话 */ private Session session = null; /** 存放附件 */ private FileDataSource fds = null; /** 存放邮件的各个部分 */ private MimeBodyPart bodyPart = null; /** 存放整个邮件 */ private Multipart mailBody = null; /** 存放整个邮件消息 */ private MimeMessage msg = null; /** 邮件的优先级 */ private String priority = "3"; /***/ private String ContentType = "text/html"; public void setContentType(String ContentType) { this.ContentType = ContentType; } /** * 设置邮件的优先级 * @param priority 邮件的优先级,默认为3 */ public void setPriority(String priority) { this.priority = priority; } public void init() { sa = new SmtpAuth(); sa.getuserinfo(userName, password); props = System.getProperties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", smtp); props.put("mail.smtp.port", smtpPort); if (checkUser) session = Session.getDefaultInstance(props, sa); else session = Session.getDefaultInstance(props, null); session.setDebug(true); msg = new MimeMessage(session); mailBody = new MimeMultipart(); } /** * 发送邮件 * @return 发送成功返回true,否则返回false */ public boolean sendMail() { bodyPart = new MimeBodyPart(); try { bodyPart.setDataHandler(new DataHandler("请使用浏览器模式", "text/plain; charset=gb2312")); mailBody.addBodyPart(bodyPart); bodyPart = new MimeBodyPart(); bodyPart.setDataHandler(new DataHandler("<br>aa<br>bb<br>cc", "text/html; charset=gb2312")); mailBody.addBodyPart(bodyPart); } catch(MessagingException msgEx) { System.out.println("222"); System.err.println(msgEx.getMessage()); } try { msg.setSentDate(new Date()); msg.setContent(mailBody); msg.setFrom(new InternetAddress(from)); System.err.println(from); msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false)); msg.setSubject(subject);// msg.setHeader("Content-Type", ContentType);// msg.setHeader("Content-Transfer-Encoding", "8bit"); msg.setHeader("X-Priority", priority); Transport.send(msg); System.out.println("*************"); } catch(MessagingException msgEx) { System.out.println("333"); System.err.println(msgEx.getMessage()); return false; } return true; } /** * 发送邮件 * @paramt from 发件人地址 * @paramt to 收件人地址 * @return 发送成功返回true,否则返回false */ public boolean sendMail(String from, String to) { this.from = from; this.to = to; return sendMail(); } /** * 发送邮件 * @paramt from 发件人地址 * @paramt to 收件人地址 * @paramt mainTxt 邮件文本内容 * @return 发送成功返回true,否则返回false */ public boolean sendMail(String from, String to, String mainTxt) { this.from = from; this.to = to; this.mainTxt = mainTxt; return sendMail(); } /** * 增加附件 * @paramt fileName 附件在客户端地址及文件名 */ public void addAccessory(String fileName) { try { mailBody.addBodyPart(getBodyPart(fileName)); } catch(MessagingException msgEx) { System.out.println("444"); System.err.println(msgEx.getMessage()); } } /** * 增加附件,放在列表指定的索引位置 * @paramt fileName 附件在客户端地址及文件名 * @paramt index 指定索引位置 */ public void addAccessory(String fileName, int index) { try { mailBody.addBodyPart(getBodyPart(fileName), index); } catch(MessagingException msgEx) { System.out.println("555"); System.err.println(msgEx.getMessage()); } } /** * 得到邮件的bodyPart * @paramt fileName 附件在客户端地址及文件名 * @return 返回邮件的bodyPart */ private MimeBodyPart getBodyPart(String fileName) { fds = new FileDataSource(fileName); bodyPart = new MimeBodyPart(); try { bodyPart.setDataHandler(new DataHandler(fds)); bodyPart.setFileName(fds.getName()); return bodyPart; } catch(MessagingException msgEx) { System.out.println("666"); System.err.println(msgEx.getMessage()); return null; } } /** * 删除附件 * @paramt fileName 附件文件名 */ public void delAccessory(String fileName) { try { mailBody.removeBodyPart(getBodyPart(fileName)); } catch(MessagingException msgEx) { System.out.println("1111"); System.err.println(msgEx.getMessage()); } } /** * 删除列表指定位置的附件 * @paramt index 指定索引位置 */ public void delAccessory(int index) { try { mailBody.removeBodyPart(index); } catch(MessagingException msgEx) { System.out.println("777"); System.err.println(msgEx.getMessage()); } } private class SmtpAuth extends Authenticator{ private String user,password; public void getuserinfo(String getuser,String getpassword){ user=getuser; password=getpassword; } protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(user,password); } }} package mymail;/** * 邮件操作的虚类, * 主要设置一些邮件所必须的参数和声明一些基本的操作 */public abstract class baseMail { /** 邮件服务器的smtp服务地址 */ protected String smtp = null; /** 邮件服务器的smtp服务端口 */ protected String smtpPort = null; /** 邮件服务器的pop3服务地址 */ protected String pop3 = null; /** 邮件服务器的pop3服务端口 */ protected String pop3Port = null; /** 收件人地址 */ protected String from = null; /** 发件人地址 */ protected String to = null; /** 邮件主题 */ protected String subject = null; /** 邮件文本内容 */ protected String mainTxt = null; /** 邮箱用户名 */ protected String userName = null; /** 邮箱密码 */ protected String password = null; /** smtp服务是否要验证用户 */ protected boolean checkUser = false; /** * 设置smtp服务是否要验证用户 * @param checkUser 是否要验证用户。true为要验证 */ public void setCheckUser(boolean checkUser) { this.checkUser = checkUser; } /** * 设置邮件服务器的smtp服务地址 * @paramt smtp smtp服务地址 */ public void setSmtp(String smtp) { this.smtp = smtp; } /** * 设置邮件服务器的smtp服务端口 * @paramt smtpPort smtp服务端口 */ public void setSmtpPort(String smtpPort) { this.smtpPort = smtpPort; } /** * 设置邮件服务器的pop3服务地址 * @paramt pop3 pop3服务地址 */ public void setPop3(String pop3) { this.pop3 = pop3; } /** * 设置邮件服务器的pop3服务端口 * @paramt pop3Port pop3服务端口 */ public void setPop3Port(String pop3Port) { this.pop3Port = pop3Port; } /** * 设置收件人地址 * @paramt from 收件人地址 */ public void setFrom(String from) { this.from = from; } /** * 设置发件人地址 * @paramt to 发件人地址 */ public void setTo(String to) { this.to = to; } /** * 设置邮件主题 * @paramt subject 邮件主题 */ public void setSubject(String subject) { this.subject = subject; } /** * 设置邮件文本内容 * @paramt mainTxt 邮件文本内容 */ public void setMainTxt(String mainTxt) { this.mainTxt = mainTxt; } /** * 设置邮箱用户名 * @paramt userName 邮箱用户名 */ public void setUserName(String userName) { this.userName = userName; } /** * 设置邮箱密码 * @paramt password 邮箱密码 */ public void setPassword(String password) { this.password = password; } /** * 发送邮件 * @return 发送成功返回true,否则返回false */ public abstract boolean sendMail(); /** * 发送邮件 * @paramt from 发件人地址 * @paramt to 收件人地址 * @return 发送成功返回true,否则返回false */ public abstract boolean sendMail(String from, String to); /** * 发送邮件 * @paramt from 发件人地址 * @paramt to 收件人地址 * @paramt text 邮件文本内容 * @return 发送成功返回true,否则返回false */ public abstract boolean sendMail(String from, String to, String text); /** * 增加附件 * @paramt fileName 附件在客户端地址及文件名 */ public abstract void addAccessory(String fileName); /** * 增加附件,放在列表指定的索引位置 * @paramt fileName 附件在客户端地址及文件名 * @paramt index 指定索引位置 */ public abstract void addAccessory(String fileName, int index); /** * 删除附件 * @paramt fileName 附件文件名 */ public abstract void delAccessory(String fileName); /** * 删除列表指定位置的附件 * @paramt index 指定索引位置 */ public abstract void delAccessory(int index);} 求助:关于Java finalize方法的用法(有关垃圾回收的) mysql 日期类型转换 急!!! AWT-EventQueue-0"是个什么东西 继承访问问题不明白! 提一个也许很初级的问题!请进来看看吧! XP下安装JDK时报错!晕,高手帮忙啊! 我做的jar为何不能双击执行?--在线等待 往数据库差入超长字符串问题。。。 简单问题,请教高手!!(在线等待) 十万火急!!为什么表单提交的button value是中文就成问号? 关于Jbuilder7连接oracle9?? 高分请教JBuilder6方面的问题
new InternetAddress("sgr"));中的参数sgr应该是一个有效的邮件地址。你的是非法的,你该成如下:
new InternetAddress("[email protected]"));就可以了。
正确代码:
package mymail;import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.activation.FileDataSource;
import javax.mail.internet.MimeBodyPart;
import javax.mail.Multipart;
import javax.mail.internet.MimeMessage;
import javax.activation.DataHandler;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.InternetAddress;
import javax.mail.Transport;
import java.util.Date;
import javax.mail.Message;public class mailOperation extends baseMail{
/** 存放session属性(smtp服务器属性) */
private SmtpAuth sa = null;
/** 存放session属性(smtp用户验证属性) */
private Properties props = null;
/** 确定邮件会话 */
private Session session = null;
/** 存放附件 */
private FileDataSource fds = null;
/** 存放邮件的各个部分 */
private MimeBodyPart bodyPart = null;
/** 存放整个邮件 */
private Multipart mailBody = null;
/** 存放整个邮件消息 */
private MimeMessage msg = null;
/** 邮件的优先级 */
private String priority = "3";
/***/
private String ContentType = "text/html"; public void setContentType(String ContentType) {
this.ContentType = ContentType;
} /**
* 设置邮件的优先级
* @param priority 邮件的优先级,默认为3
*/
public void setPriority(String priority) {
this.priority = priority;
} public void init() {
sa = new SmtpAuth();
sa.getuserinfo(userName, password);
props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", smtp);
props.put("mail.smtp.port", smtpPort);
if (checkUser)
session = Session.getDefaultInstance(props, sa);
else
session = Session.getDefaultInstance(props, null);
session.setDebug(true);
msg = new MimeMessage(session);
mailBody = new MimeMultipart();
} /**
* 发送邮件
* @return 发送成功返回true,否则返回false
*/
public boolean sendMail() { bodyPart = new MimeBodyPart();
try {
bodyPart.setDataHandler(new DataHandler("请使用浏览器模式",
"text/plain; charset=gb2312"));
mailBody.addBodyPart(bodyPart);
bodyPart = new MimeBodyPart();
bodyPart.setDataHandler(new DataHandler("<br>aa<br>bb<br>cc",
"text/html; charset=gb2312"));
mailBody.addBodyPart(bodyPart);
}
catch(MessagingException msgEx) {
System.out.println("222");
System.err.println(msgEx.getMessage());
}
try {
msg.setSentDate(new Date());
msg.setContent(mailBody);
msg.setFrom(new InternetAddress(from));
System.err.println(from);
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
msg.setSubject(subject);
// msg.setHeader("Content-Type", ContentType);
// msg.setHeader("Content-Transfer-Encoding", "8bit");
msg.setHeader("X-Priority", priority);
Transport.send(msg);
System.out.println("*************");
}
catch(MessagingException msgEx) {
System.out.println("333");
System.err.println(msgEx.getMessage());
return false;
}
return true;
}
/**
* 发送邮件
* @paramt from 发件人地址
* @paramt to 收件人地址
* @return 发送成功返回true,否则返回false
*/
public boolean sendMail(String from, String to) {
this.from = from;
this.to = to;
return sendMail();
}
/**
* 发送邮件
* @paramt from 发件人地址
* @paramt to 收件人地址
* @paramt mainTxt 邮件文本内容
* @return 发送成功返回true,否则返回false
*/
public boolean sendMail(String from, String to, String mainTxt) {
this.from = from;
this.to = to;
this.mainTxt = mainTxt;
return sendMail();
}
/**
* 增加附件
* @paramt fileName 附件在客户端地址及文件名
*/
public void addAccessory(String fileName) {
try {
mailBody.addBodyPart(getBodyPart(fileName));
}
catch(MessagingException msgEx) {
System.out.println("444");
System.err.println(msgEx.getMessage());
}
}
/**
* 增加附件,放在列表指定的索引位置
* @paramt fileName 附件在客户端地址及文件名
* @paramt index 指定索引位置
*/
public void addAccessory(String fileName, int index) {
try {
mailBody.addBodyPart(getBodyPart(fileName), index);
}
catch(MessagingException msgEx) {
System.out.println("555");
System.err.println(msgEx.getMessage());
}
}
/**
* 得到邮件的bodyPart
* @paramt fileName 附件在客户端地址及文件名
* @return 返回邮件的bodyPart
*/
private MimeBodyPart getBodyPart(String fileName) {
fds = new FileDataSource(fileName);
bodyPart = new MimeBodyPart();
try {
bodyPart.setDataHandler(new DataHandler(fds));
bodyPart.setFileName(fds.getName());
return bodyPart;
}
catch(MessagingException msgEx) {
System.out.println("666");
System.err.println(msgEx.getMessage());
return null;
}
}
/**
* 删除附件
* @paramt fileName 附件文件名
*/
public void delAccessory(String fileName) {
try {
mailBody.removeBodyPart(getBodyPart(fileName));
}
catch(MessagingException msgEx) {
System.out.println("1111");
System.err.println(msgEx.getMessage());
}
}
/**
* 删除列表指定位置的附件
* @paramt index 指定索引位置
*/
public void delAccessory(int index) {
try {
mailBody.removeBodyPart(index);
}
catch(MessagingException msgEx) {
System.out.println("777");
System.err.println(msgEx.getMessage());
}
} private class SmtpAuth extends Authenticator{
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user=getuser;
password=getpassword;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user,password);
}
}
}
* 邮件操作的虚类,
* 主要设置一些邮件所必须的参数和声明一些基本的操作
*/
public abstract class baseMail {
/** 邮件服务器的smtp服务地址 */
protected String smtp = null;
/** 邮件服务器的smtp服务端口 */
protected String smtpPort = null;
/** 邮件服务器的pop3服务地址 */
protected String pop3 = null;
/** 邮件服务器的pop3服务端口 */
protected String pop3Port = null;
/** 收件人地址 */
protected String from = null;
/** 发件人地址 */
protected String to = null;
/** 邮件主题 */
protected String subject = null;
/** 邮件文本内容 */
protected String mainTxt = null;
/** 邮箱用户名 */
protected String userName = null;
/** 邮箱密码 */
protected String password = null;
/** smtp服务是否要验证用户 */
protected boolean checkUser = false; /**
* 设置smtp服务是否要验证用户
* @param checkUser 是否要验证用户。true为要验证
*/
public void setCheckUser(boolean checkUser) {
this.checkUser = checkUser;
}
/**
* 设置邮件服务器的smtp服务地址
* @paramt smtp smtp服务地址
*/
public void setSmtp(String smtp) {
this.smtp = smtp;
}
/**
* 设置邮件服务器的smtp服务端口
* @paramt smtpPort smtp服务端口
*/
public void setSmtpPort(String smtpPort) {
this.smtpPort = smtpPort;
}
/**
* 设置邮件服务器的pop3服务地址
* @paramt pop3 pop3服务地址
*/
public void setPop3(String pop3) {
this.pop3 = pop3;
}
/**
* 设置邮件服务器的pop3服务端口
* @paramt pop3Port pop3服务端口
*/
public void setPop3Port(String pop3Port) {
this.pop3Port = pop3Port;
}
/**
* 设置收件人地址
* @paramt from 收件人地址
*/
public void setFrom(String from) {
this.from = from;
}
/**
* 设置发件人地址
* @paramt to 发件人地址
*/
public void setTo(String to) {
this.to = to;
}
/**
* 设置邮件主题
* @paramt subject 邮件主题
*/
public void setSubject(String subject) {
this.subject = subject;
}
/**
* 设置邮件文本内容
* @paramt mainTxt 邮件文本内容
*/
public void setMainTxt(String mainTxt) {
this.mainTxt = mainTxt;
}
/**
* 设置邮箱用户名
* @paramt userName 邮箱用户名
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* 设置邮箱密码
* @paramt password 邮箱密码
*/
public void setPassword(String password) {
this.password = password;
} /**
* 发送邮件
* @return 发送成功返回true,否则返回false
*/
public abstract boolean sendMail();
/**
* 发送邮件
* @paramt from 发件人地址
* @paramt to 收件人地址
* @return 发送成功返回true,否则返回false
*/
public abstract boolean sendMail(String from, String to);
/**
* 发送邮件
* @paramt from 发件人地址
* @paramt to 收件人地址
* @paramt text 邮件文本内容
* @return 发送成功返回true,否则返回false
*/
public abstract boolean sendMail(String from, String to, String text);
/**
* 增加附件
* @paramt fileName 附件在客户端地址及文件名
*/
public abstract void addAccessory(String fileName);
/**
* 增加附件,放在列表指定的索引位置
* @paramt fileName 附件在客户端地址及文件名
* @paramt index 指定索引位置
*/
public abstract void addAccessory(String fileName, int index);
/**
* 删除附件
* @paramt fileName 附件文件名
*/
public abstract void delAccessory(String fileName);
/**
* 删除列表指定位置的附件
* @paramt index 指定索引位置
*/
public abstract void delAccessory(int index);}