日期:2014-05-20 浏览次数:20990 次
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class Test {
public static void doSomething() {
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.126.com");
email.setAuthentication("Tom", "password"); // 这里是需要验证的!!
try {
email.addTo("JohnDoe@126.com", "John Doe");
email.setFrom("Tom@126.com", "Tom");
email.setSubject("ble=="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<many-to-one name="account" class="vo.Account" fetch="select">
<column name="AccountId" length="20" not-null="true" />
</many-to-one>
------解决方案--------------------
public class Mail {
public boolean sendMail(String subject, String body, String to) {
try {
SmtpAuth sa = new SmtpAuth(); // 密码验证
sa.getuserinfo("huiccsu", "hui525");
Properties props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.sina.com");
Session sess = Session.getInstance(props, sa);
sess.setDebug(true);// 调试信息
Message msg = new MimeMessage(sess);
msg
.setDataHandler(new DataHandler(body,
"text/html;charset=gb2312"));
msg.setFrom(new InternetAddress("huiccsu@sina.com", "me"));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
to, false));
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(body);
Transport.send(msg);
return true;
} catch (Exception e) {
return false;
}
}
public static void main(String[] args) {
Mail m = new Mail();
m.sendMail("测试一下java 程序",
"上联:爱已欠费,情已停机。缘份不在服务区.下联:思也痛苦,想也伤心。何日缴费再开机?横批:梦想成真",
"282564032@qq.com");
}
------解决方案--------------------
问题应该是//se.setAuthentication("sh", "sh"); 这句话被注释掉的原因.
你发邮件的过程,应该是你将邮件投递给邮局,邮局会帮你转发邮件到目的地的.
现在,估计你的电子邮局(mail.host.cn),对于向内部用户(@6ren.com.cn域名下的用户)发送邮件的时候不对数据源做身份验证,但若向外发送邮件要有身份验证才可以.
在这种情况下,应该把你邮箱的账户,密码设置进去,让邮局对你进行身份验证,这样,就可以了.
以上是我的跟人意见,仅供参考.
谢谢.