JavaMail File Transport

The JavaMail File Transport allows you to send mail using a "file" protocol, which will instead write the data out to a text file in a directory you specify, which can then be read and examined.

Лицензия

Лицензия

Категории

Категории

Сеть
Группа

Группа

net.lshift.javamail
Идентификатор

Идентификатор

javamail-file-transport
Последняя версия

Последняя версия

1.0
Дата

Дата

Тип

Тип

jar
Описание

Описание

JavaMail File Transport
The JavaMail File Transport allows you to send mail using a "file" protocol, which will instead write the data out to a text file in a directory you specify, which can then be read and examined.
Ссылка на сайт

Ссылка на сайт

http://github.com/lshift/javamail-file-transport
Система контроля версий

Система контроля версий

https://github.com/lshift/javamail-file-transport

Скачать javamail-file-transport

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/net.lshift.javamail/javamail-file-transport/ -->
<dependency>
    <groupId>net.lshift.javamail</groupId>
    <artifactId>javamail-file-transport</artifactId>
    <version>1.0</version>
</dependency>
// https://jarcasting.com/artifacts/net.lshift.javamail/javamail-file-transport/
implementation 'net.lshift.javamail:javamail-file-transport:1.0'
// https://jarcasting.com/artifacts/net.lshift.javamail/javamail-file-transport/
implementation ("net.lshift.javamail:javamail-file-transport:1.0")
'net.lshift.javamail:javamail-file-transport:jar:1.0'
<dependency org="net.lshift.javamail" name="javamail-file-transport" rev="1.0">
  <artifact name="javamail-file-transport" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.lshift.javamail', module='javamail-file-transport', version='1.0')
)
libraryDependencies += "net.lshift.javamail" % "javamail-file-transport" % "1.0"
[net.lshift.javamail/javamail-file-transport "1.0"]

Зависимости

compile (1)

Идентификатор библиотеки Тип Версия
javax.mail : mail jar 1.4.1

test (1)

Идентификатор библиотеки Тип Версия
junit : junit jar 4.8.1

Модули Проекта

Данный проект не имеет модулей.

JavaMail File Transport

When developing applications that send mail, it is often desirable to be able to test the mail sending code. Generally, this requires a functioning mail server setup.

The JavaMail File Transport allows you to send mail using a "file" protocol, which will instead write the data out to a text file in a directory you specify, which can then be read and examined.

As an example, if you were to create and send a mail message with:

public class SendAMailTest {
  public void sendTestMessage() {
	Properties props = new Properties();
	props.put("mail.transport.protocol", "file");
	props.put("mail.from", "test@example.com");
	props.put("mail.senderName", "Test Sender");
	props.put("mail.debug", true);
	props.put("mail.file.dir", "messages");
	
	Session session = Session.getInstance(props);
	MimeMessage message = new MimeMessage(session);
	message.addRecipient(Message.RecipientType.TO, new InternetAddress("user@domain.com"));
	message.setSubject("Subject");
	message.setText("Body");

	session.getTransport().sendMessage(message, message.getAllRecipients());
  }
}

Then a file would be created in messages/ using a random UUID and a .msg suffix.

Isolating Mail Configuration from your app

A common pattern is often to inject a mail session in via JNDI. This transport works especially well for that, since it allows your application to be completely agnostic of the mail transport, and for the provided jar to only be used in test scenarios.

For a Jetty application, if the WebAppContext was being configured, a sample context might be injected with configuration such as:

  <New id="mail" class="org.eclipse.jetty.plus.jndi.Resource">
	<Arg>mail/Session</Arg>
	<Arg>
	  <New class="org.eclipse.jetty.jndi.factories.MailSessionReference">
		<Set name="user"></Set>
		<Set name="password"></Set>
		<Set name="properties">
		  <New class="java.util.Properties">
			<Put name="mail.transport.protocol">file</Put>
			<Put name="mail.smtp.host">localhost</Put>
			<Put name="mail.from">app@example.com</Put>
			<Put name="mail.senderName">My Application</Put>
			<Put name="mail.file.dir">target/messages</Put>
		  </New>
		</Set>
	  </New>
	</Arg>
  </New>

Usage With Maven Jetty Plugin

The following fragment shows how the transport is configured with the Maven Jetty plugin:

org.mortbay.jetty jetty-maven-plugin
      <!-- OTHER DEPENDENCIES THAT SHOULD GO INTO JETTY'S LOAD PATH -->          

      <dependency>
        <groupId>net.lshift.javamail</groupId>
        <artifactId>javamail-file-transport</artifactId>
        <version>1.0</version>
      </dependency>

    </dependencies>

    <configuration>
      <systemProperties>
        <systemProperty>
          <name>JETTY_NO_SHUTDOWN_HOOK</name>
          <value>true</value>
        </systemProperty>
        <systemProperty>
          <name>basedir</name>
          <value>${basedir}</value>
        </systemProperty>
        <systemProperty>
          <name>diffa.maildir</name>
          <value>${basedir}/target/messages</value>
        </systemProperty>
      </systemProperties>
      <connectors>
        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
          <port>19093</port>
          <maxIdleTime>60000</maxIdleTime>
        </connector>
      </connectors>
      <scanIntervalSeconds>600</scanIntervalSeconds>
      <stopKey>foo</stopKey>
      <stopPort>19094</stopPort>
      <jettyConfig>${basedir}/src/test/conf/jetty.xml</jettyConfig>
      <webAppXml>${basedir}/src/test/conf/jetty-env.xml</webAppXml>
      <webAppConfig>
        <contextPath>/some-context-path</contextPath>
      </webAppConfig>
    </configuration>
    <executions>
      <execution>
        <id>start-jetty</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <scanIntervalSeconds>0</scanIntervalSeconds>
          <daemon>true</daemon>
        </configuration>
      </execution>
      <execution>
        <id>stop-jetty</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>stop</goal>
        </goals>
      </execution>
    </executions>

License

Copyright 2010 LShift Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
net.lshift.javamail

LShift

Версии библиотеки

Версия
1.0