日期:2014-05-20 浏览次数:20829 次
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域名下的用户)发送邮件的时候不对数据源做身份验证,但若向外发送邮件要有身份验证才可以.
在这种情况下,应该把你邮箱的账户,密码设置进去,让邮局对你进行身份验证,这样,就可以了.
以上是我的跟人意见,仅供参考.
谢谢.