这是可能的吗?我可以通过localhost发送电子邮件,但在godaddy上无法发送。有人成功实现了这一点吗?
我正在使用C#。
看起来GoDaddy屏蔽了Gmail SMTP访问所需的SSL端口,这意味着你现在没有办法。你可以使用GoDaddy本地中继:
relay-hosting.secureserver.net 无需凭据。
我能够通过在web.config
中使用以下设置,通过GoDaddy发送电子邮件:
<configuration>
<system.net>
<mailSettings>
<smtp>
<network
host="smtpout.secureserver.net"
userName="emailaccount@yourdomain.com"
password="****" />
<!--
As per @Yoro's comment you might have
luck including the port number as well
-->
</smtp>
</mailSettings>
</system.net>
</configuration>
并且这段代码:
var SmtpClient = new SmtpClient();
SmtpClient.Send("emailaccount@yourdomain.com", "to@whatever.com", "subject", "body");
注意,我认为您发送的电子邮件中的发件人地址必须来自您的域。我尝试将电子邮件作为另一个域发送,但收到了错误消息。
您必须确保在GoDaddy中拥有电子邮件帐户,可以通过登录并转到“产品”>“电子邮件”>“电子邮件计划”来检查。您还必须确保SMTP中继已打开,在我的情况下,默认情况下已打开。还要知道,默认情况下,我的GoDaddy帐户仅允许我每天发送250封电子邮件。
// language -- C#
// import namespace
using System.Web.Mail;
private void SendEmail()
{
const string SERVER = "relay-hosting.secureserver.net";
MailMessage oMail = new System.Web.Mail.MailMessage();
oMail.From = "emailaddress@domainname";
oMail.To = "emailaddress@domainname";
oMail.Subject = "Test email subject";
oMail.BodyFormat = MailFormat.Html; // enumeration
oMail.Priority = MailPriority.High; // enumeration
oMail.Body = "Sent at: " + DateTime.Now;
SmtpMail.SmtpServer = SERVER;
SmtpMail.Send(oMail);
oMail = null; // free up resources
}
这似乎是一个常见的问题。
有两件事是必需的。
这样应该可以正常工作。
对于仍在寻找答案的人,请尝试以下方法:
smtp.Host = "relay-hosting.secure.net";
smtp.EnableSsl = false;
smtp.UseDefaultCredentials = false;
smtp.Port = 25;
他们这样做是为了防止垃圾邮件发送者劫持帐户
使用GoDaddy表单邮件程序有一个替代方法(Google搜索:“_gdForm / webformmailer.asp”)
可以使用此替代方法将预先指定的“表单邮件程序”电子邮件帐户发送所有Web表单,它确实有效! 但是需要在GoDaddy上进行一些hosting.content.form-mailer设置。
查看我如何使用表单邮件程序:
(唯一的问题是,它会取消编写订阅/退订XML数据库的能力,因为表单数据被发送到此无法访问的ASP文件中)因此,我可能最终会恢复使用ASP.NET中的中继主机
www.earthed.net.au \ News.aspx www.earthed.net.au \ Contact.aspx www.earthed.net.au \ Support.aspx
我的最终目标是从joe @ blogs.com收到一封电子邮件,其中包含必要的表单字段数据,但无论您如何进行Host提供商的安全设置都将最终确定您执行此操作的能力。
还尝试使用google和hotmail smtp主机(因为我每个帐户都有),并且具有相同的安全限制故事,也许还有一个不知名的免费网络电子邮件提供商,其安全设置较低,可以允许完全中继主机(如果是这样,请告诉我)
在经历了你在问题中描述的相同问题后,我终于找到了解决方案。
检查你的 web.config 文件,并确保每当你发布网站时,调试属性都设置为 false。如果这个方法对我有效,那么请告诉我它是否对你有效。
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<customErrors mode="Off"/>
</system.web>
</configuration>
我正在尝试类似的事情,刚刚收到了重置邮件和注册邮件,不得不将$header
更改为noreply@zzz.com
以匹配网站地址。不需要SMTP
,只是接收电子邮件需要很长时间...仍在进行中。
$subject = "Please reset your password";
$message = " Here is your password reset code {$validation_code}
Click here to reset your password http://www.zzz.com/Login_App/code.php?email=$email&code=$validation_code
";
$headers = "From: noreply@zzz.com";
我认为你最好的选择是找另一个主机。当我在godaddy上为一个网站编码时,我记得问过godaddy是否禁用了他们的mapi函数,结果他们做的不仅仅是禁用它。我听说他们过滤特定的出站端口。