在Web应用程序中发送电子邮件

前端之家收集整理的这篇文章主要介绍了在Web应用程序中发送电子邮件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一些意见,我正在构建一个具有相当标准功能的Web应用程序:

>通过填写表单并提交帐户注册账户.
>收到一封确认代码链接的电子邮件
>单击链接以确认新帐户并登录

当您从网络应用程序发送电子邮件时,通常(通常)持久层将会有一些变化.例如:

>新用户注册您网站上的帐户 – 新用户数据库中创建,电子邮件将通过确认链接发送给他们
>用户向其他人分配错误或问题 – 更新问题并发送电子邮件通知.

如何发送这些电子邮件对您的应用程序的成功至关重要.如何发送它们取决于收件人收到邮件的重要性.

使用示例1,我们将介绍与邮件服务器关闭的情况相关的以下四种策略.

交易&同步
发送电子邮件失败,用户显示一条错误消息,表示无法创建其帐户.当应用程序等待连接超时时,应用程序将显得缓慢而无响应.因为事务被回滚,所以不会在数据库中创建该帐户.

交易&异步
这里的事务定义是指将电子邮件发送到JMS队列或将其保存在数据库表中以供另一个后台进程接收和发送.

用户帐户是在数据库中创建的,电子邮件将发送到JMS队列以供稍后处理.交易成功并承诺.用户显示一条消息,指出他们的帐户是创建的,并检查他们的电子邮件确认链接.在这种情况下,由于某些其他错误,电子邮件永远不会发送,但是用户被告知该电子邮件已发送给他们.如果必须调用应用程序支持来诊断电子邮件问题,则可能会有一些延迟将电子邮件发送给用户.

非交易性同步
用户数据库中创建,但是当尝试使用确认链接发送电子邮件时,应用程序会收到超时错误.用户显示一条错误消息,指出有错误.应用程序缓慢而无响应,因为它等待连接超时

邮件服务器恢复生效并且用户尝试重新注册时,他们被告知他们的帐户已经存在但尚未被确认,并且可以选择重新发送电子邮件.

非交易性异步
这与交易与交易之间的唯一区别异步的是,如果发送电子邮件到JMS队列或将其保存在数据库中存在错误,则仍然创建用户帐户,但是电子邮件永远不会发送,直到用户再次尝试注册为止.

我想知道的是其他人在这里做什么?你可以推荐除上述4之外的任何其他解决方案吗?接近这个问题的合理方法是什么?我不想过度设计一个处理我的邮件服务器的(希望)罕见情况的系统!

最简单的做法是同步编码,但这种方法还有其他的缺陷吗?我想我想知道如果最好的做法,我没有找到很多在谷歌搜索.

解决方法

我的2美分:

>一旦您有用户注册,如果发送电子邮件失败,则不要退回注册.出于简单的商业原因:如果第一次尝试不起作用,他们可能不会回来或重新注册.而是容忍一个不完整的注册,并让用户尽快确认他们的电子邮件地址.
>在大多数情况下,发送电子邮件发生错误,您的应用程序将无法立即获得反馈 – 有效服务器上的不存在的电子邮件地址会以一定的延迟发回“无法投递”的消息;如果邮件垃圾邮件过滤器吃掉,您根本不会收到任何反馈;在其他情况下,可能需要几分钟(灰名单)几天(邮件服务器暂时关闭)才能发送电子邮件.因此,等待邮递的同步方法注定是IMO.即使是立即失败(因为用户输入了一个明显的假地址)不应该导致注册回滚.

我会做的是,使帐户创建尽可能容易,允许用户在确认帐户之前访问帐户,然后将其从他们身上确认他们的电子邮件(如有必要,限制访问某些区域,直到确认).尽管如此,我会阻止创建具有相同电子邮件的第二个帐户,以防止混乱.

确保即使前一个地址尚未确认,也可以更改电子邮件地址,并允许用户重新请求确认消息到另一个地址.

猜你在找的HTML相关文章