是不是与smtp服务器设置有关!!

解决方案 »

  1.   

    贴一个我做流程时邮件通知得代码,试过了挺好用的
    //´øÑéÖ¤µÄ·¢ËÍÓʼþ·½·¨
        public void sendEmail(String smtpServer,String fromUser,String fromPassword
         ,String fromEmail,String toUserEmail,String subject,String comment) throws UnsupportedEncodingException, MessagingException{
         Properties props=new Properties();
    props.put("mail.smtp.auth","true");
    props.put("mail.host",smtpServer);
            props.put("mail.smtp.user", fromUser);
            props.put("mail.smtp.password", fromPassword);        Session session=Session.getDefaultInstance(props,null);
            Message msg=new MimeMessage(session);
    msg.setFrom(new InternetAddress(fromEmail,fromUser));
    msg.setRecipient(Message.RecipientType.TO,new InternetAddress(toUserEmail));
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    msg.setText(comment);

    Transport transport = session.getTransport("smtp");
    transport.connect((String)props.get("mail.smtp.host"),
    props.getProperty("mail.smtp.user"),
    props.getProperty("mail.smtp.password"));

            transport.sendMessage(msg,msg.getAllRecipients());
      
          
        }
      

  2.   

    这个不是和你的程序相关的,是和服务器设置相关的,
    如果服务器端设置了发邮件必须login,那么你想匿名,或者不写pwd都是不行的
      

  3.   

    你可是直接声请一个163.com的邮箱就作为发送邮件来使用,把这个声请的邮箱的用户名和密码写在代码中,通过au.check("用户名","密码")方法来通过验证,给你一段代码试试,这是我用来将告警信息发送到指定用户的信箱里.
    Properties props = new Properties();SendMailAuthenticator au = new SendMailAuthenticator();
    au.check("用户名", "密码"); // 认证 
    props.put("mail.smtp.host", "smtp.126.com"); // 设置smtp服务器
    props.put("mail.smtp.auth", "true"); // 这样认证才会起作用:)
    Session session = Session.getInstance(props, au);// 创建sessionMimeMessage message = new MimeMessage(session); //创建message对象
    //先来写“信封”吧
    try {
         
         Address address = new InternetAddress("*****@126.com", "发件人姓名"); //发件人地址
         Address toAddress = new InternetAddress(*****@163.com);//收件人地址
         message.setFrom(address);//设置发件人
         message.setRecipient(MimeMessage.RecipientType.TO, toAddress);//设置收件人     //下面写邮件内容
         message.setSubject("测试邮件", "GB2312"); //设置主题
         message.setSentDate(new Date());//设置日期
         message.setText("凡在我心目中占有一定地位的人都将获得我有我免费提供测试邮件一封!!呵呵…^_^," +"发生告警的设备id是:"+id, "GB2312");//设置邮件内容//发送啦
         Transport transport = session.getTransport("smtp");
         Transport.send(message);   }catch(Exception ex){
       ex.printStackTrace();
    }
      

  4.   

    还是不可以,我实验了验证用户名称必须和(From)发送邮件人是同一人才可以发送,我用的是smtp.163.com,提示错误:
    javax.mail.MessagingException: 553 You are not authorized to send mail as <MAIL FROM:<[email protected]>>, authentication is required
    我用的用户名称是令一个邮箱名称。感谢: freestorm119(皮皮鲁) 兄,你的SendMailAuthenticator类没有写,我在网上找到了,
    补充一下。import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;public class SendMailAuthenticator extends Authenticator
    {
    private String username = ""; 
      private String password = "";    public void check(String username, String password){ 
    this.username = username; 
    this.password = password; 
      }    public PasswordAuthentication getPasswordAuthentication(){ 
    return new PasswordAuthentication(username,password); 
      } 
    }
    方法还是很好用的,但是不成功!
    应该是象 eureka0891()  兄说的那样。
    感谢帮助。
      

  5.   

    不过你有没有考虑过怎么能让发送的时候作一个控制,就是当产生告警信息后我采用发email的方法通知相关的人员,可是相同的告警会不停的产生,而又不能一直不停的给用户发信,不然邮箱那里能受的了啊,怎么能让相同的告警信息不重复的发送给相同的用户啊,只是想给点思路,谢谢
      

  6.   

    http://www.javayou.com/showlog.jspe?log_id=502
      

  7.   

    这个不是和你的程序相关的,是和服务器设置相关的,
    如果服务器端设置了发邮件必须login,那么你想匿名,或者不写pwd都是不行的
    ----------------------------------是这样的!