duguyiren3476 发表于 2013-2-3 10:26:33

javamail的smtp方式发送邮件实例

<div class="iteye-blog-content-contain" style="font-size: 14px;">
[*]本实例为javamail发送smtp邮件实例和常见问题解决
[*]
[*]package mail;  
[*]  
[*]import java.util.Date;  
[*]import java.util.Properties;  
[*]import javax.mail.Address;  
[*]import javax.mail.Authenticator;  
[*]import javax.mail.Message;  
[*]import javax.mail.PasswordAuthentication;  
[*]import javax.mail.Session;  
[*]import javax.mail.Transport;  
[*]import javax.mail.internet.InternetAddress;  
[*]import javax.mail.internet.MimeMessage;  
[*]  
[*]/** *//** 
[*] * 发送普通邮件,接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 发送带有图片的邮件等做了一个总结。 
[*] */  
[*]public class Test  
[*]{  
[*]    // 邮箱服务器  
[*]    private String host = "smtp.163.com";  
[*]    // 这个是你的邮箱用户名   用户名一般为xxx@163.com中的xxx 但当确认无误时依然是认证错误可以修改为xxx@163.com全名测试
[*]    private String username = "******";  
[*]    // 你的邮箱密码  
[*]    private String password = "******";  
[*]      
[*]    private String mail_head_name = "this is head of this mail";  
[*]  
[*]    private String mail_head_value = "this is head of this mail";  
[*]  
[*]    private String mail_to = "zdw@live.cn";  
[*]  
[*]    private String mail_from = "*****@163.com";  
[*]  
[*]    private String mail_subject = "this is the subject of this test mail";  
[*]  
[*]    private String mail_body = "this is the mail_body of this test mail";  
[*]  
[*]    private String personalName = "我的邮件";  
[*]  
[*]    public Test()  
[*]    {  
[*]    }  
[*]  
[*]    /** *//** 
[*]     * 此段代码用来发送普通电子邮件 
[*]     */  
[*]    public void send() throws Exception  
[*]    {  
[*]        try  
[*]        {  
[*]            Properties props = new Properties(); // 获取系统环境  
[*]            Authenticator auth = new Email_Autherticator(); // 进行邮件服务器用户认证  
[*]            props.put("mail.smtp.host", host);  
[*]            props.put("mail.smtp.auth", "true");  
[*]            Session session = Session.getDefaultInstance(props, auth);  
[*]            // 设置session,和邮件服务器进行通讯。  
[*]            MimeMessage message = new MimeMessage(session);  
[*]            // message.setContent("foobar, "application/x-foobar"); // 设置邮件格式  
[*]            message.setSubject(mail_subject); // 设置邮件主题  
[*]            message.setText(mail_body); // 设置邮件正文  
[*]            message.setHeader(mail_head_name, mail_head_value); // 设置邮件标题  
[*]            message.setSentDate(new Date()); // 设置邮件发送日期  
[*]            Address address = new InternetAddress(mail_from, personalName);  
[*]            message.setFrom(address); // 设置邮件发送者的地址  
[*]            Address toAddress = new InternetAddress(mail_to); // 设置邮件接收方的地址  
[*]            message.addRecipient(Message.RecipientType.TO, toAddress);  
[*]            Transport.send(message); // 发送邮件  
[*]            System.out.println("send ok!");  
[*]        } catch (Exception ex)  
[*]        {  
[*]            ex.printStackTrace();  
[*]            throw new Exception(ex.getMessage());  
[*]        }  
[*]    }  
[*]  
[*]    /** *//** 
[*]     * 用来进行服务器对用户的认证 
[*]     */  
[*]    public class Email_Autherticator extends Authenticator  
[*]    {  
[*]        public Email_Autherticator()  
[*]        {  
[*]            super();  
[*]        }  
[*]  
[*]        public Email_Autherticator(String user, String pwd)  
[*]        {  
[*]            super();  
[*]            username = user;  
[*]            password = pwd;  
[*]        }  
[*]  
[*]        public PasswordAuthentication getPasswordAuthentication()  
[*]        {  
[*]            return new PasswordAuthentication(username, password);  
[*]        }  
[*]    }  
[*]  
[*]    public static void main(String[] args)  
[*]    {  
[*]        Test sendmail = new Test();  
[*]        try  
[*]        {  
[*]            sendmail.send();  
[*]        } catch (Exception ex)  
[*]        {  
[*]        }  
[*]    }  
[*]  
[*]} 
常见错误
错误一:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
解决方法:到D:\MyEclipse 6.5

\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806

\data\libraryset\EE_5目录下找到javaee.jar删除其中到mail文件夹。

错误二:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream
解决方法:
下载mail.jar和activation.jar文件加入到工程中。

下载地址:http://lym6520.iteye.com/blog/655373
页: [1]
查看完整版本: javamail的smtp方式发送邮件实例