VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 645|回复: 3

java发邮件出错了,帮忙看下~~~~

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-20 06:00:02 | 显示全部楼层 |阅读模式
按书上说的写了个邮件发送的小类,可老是发不出去,大家帮忙看看下.一起两个类,MailSedn.java是发送的,s.java是主类,代码如下:
//MailSend.java:

import java.io.*;
import java.text.*;
import java.net.*;
import java.util.Properties;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;

public class MailSend {
        String subject = null,text = null,mailhost = null;
        public MailSend(){
                mailhost = "localhost";
                text = getUserText();
                subject = "Welcome~";
        }
        public String sednMsg(String from,String to){
                boolean debug = false;
                String err = null;
                try{
                        Properties props = System.getProperties();
                        if(mailhost!=null)
                                props.put("mail.smtp.host", mailhost);
                        Session session = Session.getDefaultInstance(props,null);
                        if(debug)
                                session.setDebug(true);
                        Message msg = new MimeMessage(session);
                       
                        //from = null;
                        if(from != null){
                                msg.setFrom(new InternetAddress(from));
                                System.out.print("from is not null~");
                        }
                        else{
                                msg.setFrom();
                                System.out.print("from is null~");
                        }
                        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to,false));
                       
                        msg.setSubject(subject);
                        msg.setText(text);
                       
                        msg.setSentDate(new Date());
                        Transport.send(msg);
                        System.out.println("Mail has been send successfully!");
                       
                }
                catch (Exception e){
                        e.printStackTrace();
                        err = e.toString();
                        err = "Mail send has an error!";
                }
                return err;
        }
       
        public String getUserText(){
                String userText = "";
                String nowDate = DateFormat.getDateInstance().format(new Date());
                userText = "hello~";
                return userText;
        }

}


//S.java


public class S {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                String mail = new String("suhuajun2001@163.com");
                MailSend ms = new MailSend();
                ms.sednMsg("shj0717@gmail.com", "suhuajun2001@163.com");
                //ms.sednMsg("", mail);

        }

}


错误提示如下:
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
        com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for suhuajun2001@163.com

        at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
        at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
        at javax.mail.Transport.send0(Transport.java:169)
        at javax.mail.Transport.send(Transport.java:98)
        at server.MailSend.sednMsg(MailSend.java:47)
        at server.S.main(S.java:12)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for suhuajun2001@163.com

大家看看是什么原因.还有,这个要用到的jar文件(mail.java,activation.java)我都包进去了~~~


回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-29 05:45:02 | 显示全部楼层
应该要设置你的密码才能发啊,mailhost 也不对吧,
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-29 10:18:01 | 显示全部楼层
/*
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.day1124;

/**
* @author dengjiang
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SendMail {

    public SendMail() {
    }

    public void send() {
        try {
            Properties props = new Properties();
            Session sendMailSession;
            Store store;
            Transport transport;
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", "smtp.163.com"); //smtp主机名。
            props.put("mail.smtp.user", "test@163.com"); //发送方邮件地址。
            props.put("mail.smtp.password", "111111"); //邮件密码。
            PopupAuthenticator popA = new PopupAuthenticator();//邮件安全认证。
            PasswordAuthentication pop = popA.performCheck("test", "11111"); //填写用户名及密码
            sendMailSession = Session.getInstance(props, popA);
            Message newMessage = new MimeMessage(sendMailSession);
            newMessage.setFrom(new InternetAddress("test@163.com"));
            newMessage.setRecipient(Message.RecipientType.TO,
                    new InternetAddress("luozonghang@163.com")); //接收方邮件地址
            String subject="邮件主题subject";
            String tmp=new String(subject.getBytes("GBK"));
            newMessage.setSubject(tmp);
            newMessage.setSentDate(new Date());
            String mailContent;
            mailContent = "你好hellow";
            mailContent += "\t邮件正文content\n\n";
            String content1="hrrhrhrhrhhhhhhhhhhhhhhhhhhhhhhhhh";
                   
           mailContent += new Date().toLocaleString();
            newMessage.setText(new String(content1.getBytes("big5"))); //邮件正文
            transport = sendMailSession.getTransport("smtp");
            transport.send(newMessage);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SendMail sml = new SendMail();
        sml.send();
    }

    public class PopupAuthenticator extends Authenticator {
        String username = null;

        String password = null;

        public PopupAuthenticator() {
        }

        public PasswordAuthentication performCheck(String user, String pass) {
            username = user;
            password = pass;
            return getPasswordAuthentication();
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    }
}


有邮件地址的地方改成你的邮箱即可。
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-3-10 19:30:02 | 显示全部楼层
问题解决了,十分感谢~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表