2017-05-12 12 views
0

私の会社のサーバを使用してメールを送信しようとしていますが、何かが動作しません。AndroidのJavaMailがExchangeサーバでメールを送信する

private Properties _setProperties() { 


    _port = 443; 
    _sport = 443; 
    Properties props = (Properties) System.getProperties().clone(); 

    props.put("mail.smtps.host", _host); 
    props.put("mails.debug", "true"); 
    props.put("mail.smtps.auth", "true"); 

    props.put("mail.smtps.port", _port); 
    props.put("mail.smtps.ssl.port", "true"); 
    props.put("mail.smtps.ssl.socketFactory.port", _sport); 
    props.put("mail.smtps.ssl.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtps.ssl.socketFactory.fallback", "false"); 

    return props; 
} 

public boolean send() throws Exception { 
    Properties props = _setProperties(); 

    _user = "email"; 
    _pass = "pass"; 

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

    MimeMessage msg = new MimeMessage(session); 
    msg.setFrom(new InternetAddress(_user)); 
    msg.setRecipients(MimeMessage.RecipientType.TO, "mailTO"); 
    msg.setSubject("SUBJECT"); 
    msg.setSentDate(new Date()); 
    msg.setText("TEXT"); 

    // send email 
    Transport transport = session.getTransport("smtps"); 
    transport.connect(); 
    transport.sendMessage(msg, msg.getAllRecipients()); 
    transport.close(); 

    return true; 

} 

デバッグには、以下を示しています。

DEBUG: setDebug: JavaMail version 1.5.5 

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle] 

DEBUG SMTP: need username and password for authentication 

DEBUG SMTP: useEhlo true, useAuth true 

DEBUG SMTP: trying to connect to host "companyServer", port 443, isSSL true 

が接続しようとし続け、すべての答えを与えるものではありません。 mail.smtps.writetimeoutを設定すると、java.net.SocketExceptionが返されます。ソケットが閉じられました

ご存じですか? :S

+0

[一般的なJavaMailの間違い](https://javaee.github.io/javamail/FAQ#commonmistakes)を修正し、公式の[Android用JavaMail](https://javaee.github)を使用していることを確認してください。 io/javamail/Android)にあります。次に、これらの[接続デバッグのヒント](https://javaee.github.io/javamail/FAQ#condebug)に従ってください。 –

答えて

0

すべてのOutlookクライアントは、MAPIまたはMAPI-over-http(MAC使用EWS)のいずれかを使用することに注意してください。したがって、ほとんどのExchange管理者はユーザーにSMTPの使用を許可していない可能性があり、期待どおりに機能しない可能性があります。

MS Exchange管理者は、この方法でSMTPを使用できるかどうか確認しましたか?

+0

あなたが正しいです、私は私のExchange管理者にチェックして、私はSMTPを使用することはできません、私はEWSを使用する必要があります。私は[EWS Andorid API](github.com/alipov/ews-android-api)で試しましたが、削除されたApacheのようなクラスが見つからないため、実行エラーが発生します –

+0

私はアンドロイドの開発者ではありませんが、 [ExchangeでEWSを使用して電子メールメッセージを送信する方法](https://msdn.microsoft.com/en-us/library/office/dn600292(v = exchg.150).aspx ) – BastianW

+0

ありがとうございますが、最終更新日が2015年3月9日です。今、私はそれを行うライブラリがありません –

関連する問題