开发者社区> 问答> 正文

使用javamail不能发送邮件,已经开启服务器端口



菜鸟


import java.util.Properties;


import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


import sun.misc.BASE64Encoder;


public class MailSender{
    public void sendMail() throws Exception{
        Properties props = new Properties();
        props.put("mail.smtp.host", getHost());
        props.put("mail.smtp.auth", "true");
        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(getFromAddr()));
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(getToAddr()));
        message.setSubject(getTitle());
        Multipart multipart = new MimeMultipart();
        BodyPart contentPart = new MimeBodyPart();
        contentPart.setText("这是我用Java程序发送的第一封邮件!呵呵!!!");//这里就是要发出去的邮件内容啦!
        multipart. addBodyPart(contentPart);
        if(getAttachPath() != null && getAttachName() != null){
            BodyPart attachmentPart= new MimeBodyPart();
            DataSource source = new FileDataSource(getAttachPath());
            attachmentPart.setDataHandler(new DataHandler(source));
            BASE64Encoder enc = new BASE64Encoder();
            attachmentPart.setFileName("=?GBK?B?"+enc.encode(getAttachName().getBytes())+"?=");
            multipart.addBodyPart(attachmentPart);
        }
        message.setContent(multipart);
        message.saveChanges();
        Transport transport = session.getTransport("smtp");
        transport.connect(host,getUsername(),getPassword());
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }


    private String host = null;
    private String fromAddr = null;
    private String toAddr = null;
    private String username = null;
    private String password = null;
    private String title = null;
    private String attachPath = null;
    private String attachName = null;
    
    public String getHost(){
        return host;
    }


    public void setHost(String host){
        this.host = host;
    }


    public String getFromAddr(){
        return fromAddr;
    }


    public void setFromAddr(String fromAddr){
        this.fromAddr = fromAddr;
    }


    public String getToAddr(){
        return toAddr;
    }


    public void setToAddr(String toAddr){
        this.toAddr = toAddr;
    }


    public String getUsername(){
        return username;
    }


    public void setUsername(String username){
        this.username = username;
    }


    public String getPassword(){
        return password;
    }


    public void setPassword(String password) {
        this.password = password;
    }


    public String getTitle(){
        return title;
    }


    public void setTitle(String title){
        this.title = title;
    }


    public String getAttachPath(){
        return attachPath;
    }


    public void setAttachPath(String attachPath){
        this.attachPath = attachPath;
    }


    public String getAttachName(){
        return attachName;
    }


    public void setAttachName(String attachName){
        this.attachName = attachName;
    }
}
-------------------------------------------------------------------------

public class sEND {
     public static void main(String[] args){
        MailSender sender = new MailSender();
        sender.setHost( "smtp.aliyun.com");     //可切换其他邮箱的host/126.QQ……
        sender.setFromAddr( "soft@aliyun.com"); //发件人的邮箱地址
        sender.setToAddr( "xxxxxx@126.com"); //收件人的邮箱地址
        sender.setUsername( "soft@aliyun.com"); //发件的帐号
        sender.setPassword( "xxxxxxxxx"); //发件的密码
        sender.setTitle( "The first mail"); //邮件的标题
         try {
        sender.sendMail();
        } catch (Exception e){
            e.printStackTrace();
        }
    }




}
//放在本地可以用,放在服务器不能用,,别人写的小程序,拿来测试下。。Telnet  amtp.aliuyun.com 25也不通

展开
收起
陈大大会飞 2016-11-23 07:17:47 4006 0
1 条回答
写回答
取消 提交回答
  • @vinning 求助
    2016-11-23 08:14:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载