Spring mail 로 socks 에이 전 트 를 통 해 메 일 을 보 냅 니 다.

Spring 프레임 워 크 는 자바 MailSender 인터페이스 와 그 실현 클래스 인 자바 MailSenderImpl 을 제공 합 니 다. 이 를 바탕 으로 메 일 발송 기능 을 더욱 편리 하 게 실현 할 수 있 습 니 다.
웹 프로젝트 에 서 는 자바 메 일 Sender 를 Spring IOC 에 맡 길 수 있 습 니 다.아래 설정 과 같이:
 
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="defaultEncoding" value="${email.encoding}"></property>
		<property name="host" value="${email.host}"></property>
		<property name="username" value="${email.username}"></property>
		<property name="password" value="${email.password}"></property>
		<property name="protocol" value="${email.protocal}"></property>
		<property name="javaMailProperties">
			<props>
				<!--                -->
				<prop key="mail.smtp.auth">true</prop>
				<prop key="mail.smtp.timeout">25000</prop>
				<prop key="mail.debug">true</prop>
			</props>
		</property>
	</bean>

  사용 시 Spring 용기 에서 자바 MailSenderImpl 인 스 턴 스 를 얻 고 자바 MailSender. send () 방법 을 호출 하면 메 일 을 보 내 는 기능 을 수행 할 수 있 습 니 다.
회사 가 사용 하 는 네트워크 는 외부 네트워크 를 직접 방문 할 수 없 기 때문에 메 일 을 보 내 는 것 은 대외 적 인 것 이다.프 록 시 서버 를 설치 해 야 합 니 다.자바. mail 은 http 대 리 를 모 르 고 socks V4 또는 V5 대 리 를 통 해 만 메 일 을 보 낼 수 있 습 니 다.정부측
Q: How do I configure JavaMail to work through my proxy server?
A: JavaMail does not currently support accessing mail servers through a web proxy server. One of the major reasons for using a proxy server is to allow HTTP requests from within a corporate network to pass through a corporate firewall. The firewall will typically block most access to the Internet, but will allow requests from the proxy server to pass through. In addition, a mail server inside the corporate network will perform a similar function for email, accepting messages via SMTP and forwarding them to their ultimate destination on the Internet, and accepting incoming messages and sending them to the appropriate internal mail server.
If your proxy server supports the SOCKS V4 or V5 protocol (http://www.socks.nec.com/aboutsocks.html, RFC1928) and allows anonymous connections, and you're using JDK 1.5 or newer and JavaMail 1.4.5 or newer, you can configure a SOCKS proxy on a per-session, per-protocol basis by setting the "mail.smtp.socks.host" property as described in the javadocs for the com.sun.mail.smtp package. Similar properties exist for the "imap" and "pop3" protocols.
If you're using older versions of the JDK or JavaMail, you can tell the Java runtime to direct all TCP socket connections to the SOCKS server. See the Networking Properties guide for the latest documentation of the socksProxyHost and socksProxyPort properties. These are system-level properties, not JavaMail session properties. They can be set from the command line when the application is invoked, for example: java -DsocksProxyHost=myproxy .... This facility can be used to direct the SMTP, IMAP, and POP3 communication from JavaMail to the SOCKS proxy server. Note that setting these properties directs all TCP sockets to the SOCKS proxy, which may have negative impact on other aspects of your application.
Without such a SOCKS server, if you want to use JavaMail to directly access mail servers outside the firewall, the firewall will need to be configured to allow such access. JavaMail does not support access through a HTTP proxy web server.
  따라서 send () 방법 으로 메 일 을 보 내기 전에 프 록 시 서버 를 설정 해 야 합 니 다.
여 기 는 두 가지 방식 으로 대 리 를 실현 합 니 다. 1. jvm 의 인 자 를 설정 하고 2. 프로그램 에서 Properties 를 통 해 이 루어 집 니 다.사용 하 는 매개 변 수 는 홈 페이지 문 서 를 참조 할 수 있 습 니 다. Networking Properties 본 고 는 주로 여러분 과 두 번 째 방식 을 교류 합 니 다.
웹 시작 에 서 는 사용자 정의 Servlet 을 불 러 옵 니 다. 이 Servlet 은 프 록 시 서버 를 설정 하 는 기능 을 실현 합 니 다.부분 코드:
 
System.getProperties().put("proxySet", true);
			System.getProperties().put("http.proxyHost", Config.getProperties("http.proxyHost"));
			System.getProperties().put("http.proxyPort", Config.getProperties("http.proxyPort"));
			System.getProperties().put("socksProxySet", true);
			System.getProperties().put("socksProxyHost", Config.getProperties("http.proxyHost"));
			System.getProperties().put("socksProxyPort", Config.getProperties("http.proxyPort"));

  마찬가지 로 자바 메 일의 공식 문서 에서 도 언급 되 었 습 니 다. jdk 1.5 이상 과 자바 메 일 1.4.5 를 사용 하면 자바 메 일 Properties 설정, 더 많은 설정 항목 을 참고 할 수 있 습 니 다.  com.sun.mail.smtp package
	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="defaultEncoding" value="${email.encoding}"></property>
		<property name="host" value="${email.host}"></property>
		<property name="username" value="${email.username}"></property>
		<property name="password" value="${email.password}"></property>
		<property name="protocol" value="${email.protocal}"></property>
		<property name="javaMailProperties">
			<props>
				<!--                -->
				<prop key="mail.smtp.auth">true</prop>
				<prop key="mail.smtp.timeout">25000</prop>
				<prop key="mail.debug">true</prop>
				<prop key="mail.smtp.ssl.enable">true</prop>
				<prop key="mail.smtp.socks.host">cmproxy.gmcc.net</prop>
				<prop key="mail.smtp.socks.port">8081</prop>
				<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
			</props>
		</property>
	</bean>

좋은 웹페이지 즐겨찾기