Maven项目(account-email)的目结构如下:
account-email项目Java主代码位于src/main/java,资源文件(非Java文件)位于src/main/resources目录下。
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!--实际项目--> <groupId>com.juvenxu.mvnbook.account</groupId> <!--Maven项目,所谓Maven项目就是实际项目中的一个模块--> <artifactId>account-email</artifactId> <!--Maven项目版本,SNAPSHOT说明还不是稳定版本--> <version>1.0.0-SNAPSHOT</version> <!--name不是必须的,声明一个对于用户更为友好的项目名称--> <name>Account Email</name> <!--定义Maven的打包方式--> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--对于acount-email中这些Spring Framework来说,也应该在一个唯一的地方定义版本,并且在dependency声明中引用这一版本。这样,在升级Spring Framework的时候就只需要修改一处--> <springframework.version>2.5.6</springframework.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <!--<version>2.5.6</version>--> <!--引用在properties中定义的版本信息--> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <!--实现发送必须的类库--> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> </dependency> <dependency> <!--Junit是Java社区事实上的单元测试标准--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <!--GreenMail开源的邮件服务测试套件--> <groupId>com.icegreen</groupId> <artifactId>greenmail</artifactId> <version>1.3.1b</version> <scope>test</scope> </dependency> </dependencies> </project>
2.AccountEmailService.java接口
package com.newtouch.mvnbook.account.email; public interface AccountEmailService { /**sendMail()方法用来发送html格式的邮件,to为接收地址,subject为邮箱主题,htmlText为邮箱内容, * 如果发送邮箱出错,则抛出AccountEmailException异常。 * * @param to * @param subject * @param htmlText * @throws AccountEmailException */ public void sendMail(String to, String subject, String htmlText) throws AccountEmailException; }
3.接口的实现AccountEmailServiceImpl
package com.newtouch.mvnbook.account.email; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.mail.MailException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; public class AccountEmailServiceImpl implements AccountEmailService{ private JavaMailSender javaMailSender; private String systemEmail; @Override public void sendMail(String to, String subject, String htmlText) throws AccountEmailException { try { MimeMessage msg = javaMailSender.createMimeMessage(); MimeMessageHelper msgHelper = new MimeMessageHelper(msg); msgHelper.setFrom(systemEmail); msgHelper.setTo(to); msgHelper.setSubject(subject); msgHelper.setText(htmlText, true);//true表示邮箱的内容为html格式 javaMailSender.send(msg); } catch (MessagingException e) { throw new AccountEmailException("Fail to send email.", e); } } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public String getSystemEmail() { return systemEmail; } public void setSystemEmail(String systemEmail) { this.systemEmail = systemEmail; } }
4.自定义异常AccountEmailException
package com.newtouch.mvnbook.account.email; public class AccountEmailException extends Exception { public AccountEmailException(String msg, Throwable cause) { super(msg, cause); } }
5.spring配置文件account-email.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:service.properties" /> </bean> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="protocol" value="${email.protocol}" /> <property name="host" value="${email.host}" /> <property name="port" value="${email.port}" /> <property name="username" value="${email.username}" /> <property name="password" value="${email.password}"/> <property name="javaMailProperties"> <props> <prop key="mail.${email.protocol}.auth">${email.auth}</prop> </props> </property> </bean> <bean id="accountEmailService" class="com.maven.account.AccountEmailServiceImpl"> <property name="javaMailSender" ref="javaMailSender" /> <property name="systemEmail" value="${email.systemEmail}" /> </bean> </beans>
6.属性文件service.properties
email.protocol=smtp #使用localhost不一定可以,换成127.0.0.1 #email.host=localhost email.host=127.0.0.1 email.port=25 email.username=test@maven.com email.password=123456 email.auth=true email.systemEmail=liuxb@maven.com
7.编写测试类AccountEmailServiceTest
package com.newtouch.mvnbook.account.email; import static junit.framework.Assert.assertEquals; import javax.mail.Message; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.icegreen.greenmail.util.GreenMail; import com.icegreen.greenmail.util.GreenMailUtil; import com.icegreen.greenmail.util.ServerSetup; //import junit.framework.Test; //import junit.framework.TestCase; //import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AccountEmailServiceTest { private GreenMail greenMail; @Before public void startMailServer() throws Exception{ greenMail = new GreenMail(ServerSetup.SMTP); greenMail.setUser("test@maven.com","123456"); greenMail.start(); } @Test public void testSendMail() throws Exception{ ApplicationContext ctx = new ClassPathXmlApplicationContext("account-email.xml"); AccountEmailService accountEmailService = (AccountEmailService)ctx.getBean("accountEmailService"); String subject = "Test Subject"; String htmlText = "<h3>gaoweigang</h3>"; accountEmailService.sendMail("test2@maven.com",subject,htmlText); greenMail.waitForIncomingEmail(2000,1); Message[] msgs = greenMail.getReceivedMessages(); System.out.println("msgs.length="+msgs.length); System.out.println("subject="+msgs[0].getSubject()); System.out.println("htmlText="+GreenMailUtil.getBody(msgs[0]).trim()); assertEquals(1,msgs.length); assertEquals(subject,msgs[0].getSubject()); assertEquals(htmlText,GreenMailUtil.getBody(msgs[0]).trim()); } @After public void stopMailServer() throws Exception{ greenMail.stop(); } }
相关推荐
"account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname": "Mckenzie", "age": 29, "gender": "F", "address": "244 Columbus Place", "employer": "Euron", "email": ...
Maven实战学习代码.zip account-aggregator account-captcha account-email account-parent account-persist account-service account-web hello-world src/main/webapp
例如,"account-email"模块可能使用了maven-email-plugin来发送测试邮件,或者使用maven-surefire-plugin进行单元测试。 此外,Maven的依赖管理能够解决版本冲突问题。当两个或更多模块依赖于同一个库的不同版本时...
Insta大众帐户创建者 由于存在不同的挑战,因此未积极维护。 如果您想维持这个项目,请与我联系! 创建一个新的virtualenv 要求: 运行pip install -r ... 用于自定义域名,对于使用自己的email_domain很有
可能的配置(在settings.json中): {twofactorauth - email : {active : true / false , ( default : true )useOnlyIfNewIp: true / false , ( default : false )exemptedRoles: [ 'admin' , 'moderator' ] , ( ...
在描述中的“account-email”、“account-aggregator”和“account-persist”可能代表项目中的不同模块,这些模块可以通过Maven进行组织和构建。 Maven的项目结构通常遵循约定优于配置的原则,标准目录结构包括src/...
综上所述,"spring-boot-user-account-registration"项目涵盖了Spring Boot核心特性、用户账户管理、前端UI设计、数据库集成、数据验证、安全性和测试等多个方面。这为构建一个完整的用户注册系统提供了全面的实践...
Python的smtplib和email库可以实现这一功能。 在"the-worst-account-destroy-main"这个文件名中,"main"可能表示这是项目的主要代码或入口点。在这个文件中,可能会包含执行账户销毁过程的主逻辑。分析这个文件的...
确保你的MATLAB版本支持`email`函数,这个功能在R2014b及更高版本中引入。 总之,通过MATLAB的`email`函数和SMTP协议,我们可以方便地实现向Gmail账户发送邮件的功能。这为MATLAB程序提供了一种实用的通信手段,有...
python库。 资源全名:trytond_account_dunning_email-5.0.2.tar.gz
它并不包含任何实际的代码,而是用来管理`account-email`和`account-persist`这两个子项目。聚合项目通过在`pom.xml`文件中定义`modules`元素来指定子项目。这样,当我们运行`parent`项目的构建时,Maven会自动递归...
只需在"ddtraceweb/smtp-validator-email": "dev-master"添加"ddtraceweb/smtp-validator-email": "dev-master"即可安装最新版本 #例子 : 带有1个电子邮件的示例: <?php use SmtpValidatorEmail \ ...
安装npm install -g sms24x7-client用法sms24x7-client --email=your-account-email@example.com --password=your-account-password --phone=receiver-phone --message=your-text-message [--sender = sender-name-...
账户注册和登录通常涉及到输入字段<input type="text/email/password">、提交按钮以及可能的验证机制,如required属性。在创建备注功能时,可以使用元素让用户输入文本,并通过触发保存操作。此外,可能还会用到标签...
在这个例子中,我们定义了一个account对象,它有四个属性:id(一个介于1到1000之间的整数)、username(使用random.uuid生成的唯一字符串)、email(使用random.email生成的合法电子邮件地址)以及createdAt(使用...
**Elasticsearch官方提供数据案例account.json** Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许用户快速地存储、搜索和分析大量数据。在这个案例中,"account.json"是Elasticsearch官方提供的一...
ProtonMail帐户创建者 :rocket: 创建无数的免费ProtonMail帐户。 :rocket: :building_construction: 管理您的免费ProtonMail帐户。 :building_construction: :pushpin: 版本1.0.2 :pushpin: ...
基于角色的电子邮件地址列表“基于角色”的电子邮件地址的通用前缀,代表公司中的职位,职位或人员群,而不是个人。 这些来自几个地方。贡献请贡献。 只需将它们保持字母顺序即可(在数组上调用sort()将返回的“自然...
A wizard will let you create an email account, specify the valid email address. For hotmail account, wizard automatically sets the names of email servers. After successfully creating the account,...