我已经尝试过许多在线发现的例子,但大多数情况似乎不起作用.其中一些需要SMTP服务器等参数,但如果我的用户可以自由输入自己的电子邮件地址,我的程序如何确定?另外我没有在我的电脑安装默认的电子邮件客户端,所以如果我无法从我的程序发送电子邮件,那么我相信任何人谁使用我的程序将有同样的问题.
所以基本上我问的是:
>如何发送电子邮件
>附件不是必需的,但会有其优点
>如何处理SMTP服务器,端口号等的事情?
>如果没有安装默认的电子邮件客户端,该如何处理
我希望我的帖子很容易理解.
谢谢
解决方法
可能的解决方案
>不要从客户端计算机发送电子邮件,使用Web服务传递邮件.无论什么技术驱动您的网站,它可以处理发布的表单,它可以发送电子邮件.只需将用户的问题发送到您的Web服务,并将您的Web服务使用电子邮件发送给您或将其保存到数据库.如果用户认为他连接到互联网,他可能会这么说,因为他的浏览器可以工作,但只说HTTP是正常的:SMTP可能被公司的防火墙或ISP阻止.这是我的首选解决方案.
>使用您的SMTP服务器和您的凭据发送电子邮件.从用户的地址发送电子邮件是非常不可靠的.您可以将用户的电子邮件地址添加到“REPLY TO”标题中,或者将其放在消息正文中.您可以使用Indy组件来执行此操作,因为它是您的SMTP服务器和凭据,您可以了解所有详细信息.如以前的项目符号所述,这可能会失败,因为SMTP可能被用户的防火墙或ISP的防火墙阻止.
关于SMTP
首先关于SMTP协议本身的几个字,因为一切都是基于这一点:
> SMTP是用于发送电子邮件的协议.还有其他实现特定协议,但是所有电子邮件服务器都需要实现SMTP.
> SMTP是在垃圾邮件之前设计的.它允许任何计算机发送电子邮件到任何服务器.发送电子邮件绝对不需要认证(理论上),服务器的SMTP服务器地址作为MX记录存储在DNS中.
> SMTP本身绝对没有验证发件人的方式,不尝试检查用户是否真的是“发件人”字段中的用户.
从用户地址发送电子邮件时的第一个选项是使用本地安装的客户端和自动化,以便它们呈现一个现成的Outlook(或Firefox或其他)电子邮件表单,只需点击“发送”即可.但是你说你希望你的解决方案能够正常工作,甚至没有安装本地电子邮件,所以这不是一个选择.
你提到你希望实现这个要求用户只有她的电子邮件地址,没有服务器的详细信息,我没有使用用户名和密码. SMTP协议实际上允许这一点,因为它没有内置机制来验证发件人.垃圾邮件人员利用这一点,这被称为“欺骗发件人地址”.为了防止这两件事发生:
> SMTP主机不再接受任何人的电子邮件,他们尝试以某种方式验证发送的SMTP服务器.换句话说,您的SMTP服务器将拒绝您发送给您的假电子邮件!建议的修复方法是使用SMTP中继.但是之后…
> SMTP中继不再从未知用户转发电子邮件! SMTP本身不提供任何身份验证机制,但通常的解决方法是首先阅读电子邮件(因为该部分需要身份验证)才能发送电子邮件.这可以通过您可能正在使用的发送SMTP组件自动完成,但无论如何,这需要用户名和密码.