2016-09-09 10 views
1

Gmail、Hotmail、およびOutlookアカウントからメールを送信するためにJavaメールAPIを使用しました。 GmailとHotmailのではうまくいきましたが、Outlookでは機能しません。JavaMail例外:STOREDRV.Submission.Exception:OutboundSpamException

Outlookの送信者クラスの

コード

public class OutlookSender extends javax.mail.Authenticator { 


    private String mailhost = "smtp-mail.outlook.com"; 
    private String user; 
    private String password; 
    private Session session; 

    static { 
     Security.addProvider(new JSSEProvider()); 
    } 

    public OutlookSender(String user, String password) { 
     this.user = user; 
     this.password = password; 


     Properties props = new Properties(); 
     props.setProperty("mail.transport.protocol", "smtp"); 
     props.setProperty("mail.host", mailhost); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.port", "587"); 


     session = Session.getDefaultInstance(props, this); 
     session.setDebug(true); 
    } 

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

    public synchronized void sendMail(String subject, String body, 
             String sender, String recipients) throws Exception { 
     MimeMessage message = new MimeMessage(session); 
     DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain")); 
     message.setSender(new InternetAddress(sender)); 
     message.setSubject(subject); 
     message.setDataHandler(handler); 

     if (recipients.indexOf(',') > 0){ 
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); 

     } else{ 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); 

     } 
     message.saveChanges(); 

     //Transport trans = session.getTransport("smtp"); 
     Transport transport = session.getTransport("smtp"); 
     transport.connect(mailhost, user, password); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 
    } 
} 

コード電子メールを送信する:

OutlookSender sender = new OutlookSender("[email protected]", "password"); 
sender.sendMail("Hello Text", "Body Text Sample", "[email protected]", "[email protected]"); 

送信した後、私はコンテンツでlogcatから例外が発生しました:

javax.mail.MessagingException: 554-554 5.2.0 STOREDRV.Submission.Exception:OutboundSpamException; Failed to process message due to a permanent exception with message WASCL UserAction verdict is not None. Actual verdict is HipSend... 

例外の理由とこの問題を解決する方法を説明してください。ありがとう。

+0

outlook.comはあなたがスパムを送信していると思っているようです。 [JavaMailデバッグ出力](http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)には何が表示されますか? –

+0

@BillShannon、それは何も表示されません。 – CauCuKien

+0

何も表示されない場合は、正しく実行していません。 –

答えて

2

これはOutlookのセキュリティです。ログインするにはWebを使用する必要があります。 このメールをチェックして、アカウントのロックを解除することもできます。


xxxxxはこんにちは、 は、メッセージを送信するでサインしてください継続し、あなたのOutlook.comアカウントを検証します。 これは、自動化されたプログラムが迷惑メールを送信するのを防ぐのに役立ちます。 ご協力いただきありがとうございます。 Outlook.comチーム