NTLMベースの認証のみを許可するExchangeサーバーを介してJavalog4jを使用して電子メールを送信する方法はありますか?
質問する
647 次
1 に答える
0
デフォルトのアペンダーはSMTP認証のみに依存しているため、それ自体では作成されません。ここに記載されているように、カスタムの電子メールアペンダーを作成できます(最初にアイデアを共有した人にリンクされているだけで、私のものではありません)。基本的に、認証が行われるアペンダーを作成します
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import org.apache.log4j.net.SMTPAppender;
/**
* @author DEV
*
*/
public class GmailAppender extends SMTPAppender {
private boolean startTLS = false;
@Override
protected Session createSession() {
Properties props = null;
try {
props = new Properties(System.getProperties());
} catch (SecurityException ex) {
props = new Properties();
}
String prefix = "mail.smtp";
if (this.getSMTPProtocol() != null) {
props.put("mail.transport.protocol", this.getSMTPProtocol());
prefix = "mail." + this.getSMTPProtocol();
}
if (this.getSMTPHost() != null)
props.put(prefix + ".host", this.getSMTPHost());
if (this.getSMTPPort() > 0)
props.put(prefix + ".port", String.valueOf(this.getSMTPPort()));
if (this.startTLS)
props.put("mail.smtp.starttls.enable", "true");
Authenticator auth = null;
if (this.getSMTPPassword() != null && this.getSMTPUsername() != null) {
props.put(prefix + ".auth", "true");
auth = new Authenticator() {
...
次に、構成ファイルで、
#email appender
log4j.appender.mail=com.horri.GmailAppender
#defines how othen emails are send
log4j.appender.mail.BufferSize=1
log4j.appender.mail.SMTPHost=smtp.gmail.com
log4j.appender.mail.From=yourmail@servermail.com
log4j.appender.mail.To=yourmail@gmail.com
log4j.appender.mail.startTLS = true
log4j.appender.mail.SMTPUsername=yourgmailusername
log4j.appender.mail.SMTPPassword=yourgmailpasswd
log4j.appender.mail.Subject=Log ...
log4j.appender.mail.threshold=error
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
**編集:時々役立つものが「怠惰をサポートする」と混ざります。したがって、これがApacheライセンスのNTLM認証の実装です。http://code.google.com/p/ntlm-java/正常に動作することを願っています。
于 2012-09-07T21:34:41.190 に答える