日期:2014-05-20  浏览次数:20851 次

HtmlEmail邮件发送例子 100分
try{
 
HtmlEmail se = new HtmlEmail();

 
String str = "尊敬的客户: ";
 
se.setHostName("mail.host.cn");
 
//se.setAuthentication("sh", "sh");
 
se.addTo("sh@6ren.com.cn");

se.setFrom("sh@6ren.com.cn", "四所");

se.setSubject("Test message");

se.setMsg(str);
 
se.setContent(str, "text/plain;charset=GBK");

se.send();
}

请教一下,我想把接收者信箱改为se.addTo("tsshanlina@163.com");就不能发送了,并抛出异常为Sending the email to the following server failed : mail.ourhost.cn:25请问如何给其它邮箱发送邮件.


------解决方案--------------------
看了一下,原来这个更好玩,哈哈!比javamail好玩。
Java code

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>

------解决方案--------------------
Java code

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域名下的用户)发送邮件的时候不对数据源做身份验证,但若向外发送邮件要有身份验证才可以.
在这种情况下,应该把你邮箱的账户,密码设置进去,让邮局对你进行身份验证,这样,就可以了.

以上是我的跟人意见,仅供参考.
谢谢.