6

这是我写的代码:

        MailMessage mail = new MailMessage("test@gmail.com", "me@myurl.com");

        mail.Subject = "This is a test!!";
        mail.Body = "testing...";

        SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect);
        System.Console.WriteLine("Access?  " + connectAccess.Access);

        SmtpClient client = new SmtpClient("mail.myurl.com", 2525);
        client.Send(mail);

它不工作。我在“client.Send(mail)”行出现异常,显示“邮箱不可用。服务器响应为 (MYLOCALCOMPUTERNAME) [MY LOCAL IP]:3045 当前不允许中继。”

connectAccess.Access 确实返回“连接”(我不确定这是否有必要......我添加它以开始故障排除过程。)

这是否意味着我的本地机器必须以某种方式进行配置?当我将我的应用程序部署到其他人的机器时呢?那里需要本地配置吗?我只是想从我的应用程序中创建一个“发送反馈”类型的链接。

(注意:在我的真实应用程序中,我在“收件人”和“发件人”中都使用了我的真实电子邮件地址,而我的 smtp 实际上是我在托管我的 url/网站的地方的 smtp 地址)

谢谢!

-阿迪娜

4

4 回答 4

7

@迈克尔:感谢您的链接。这很有帮助。

我发现了我的问题。创建“客户端”对象后,我确实需要添加登录凭据。我添加了以下行:

 client.Credentials = new System.Net.NetworkCredential("myloginat+myurl.com", "mypassword");

(对不起 - 我有这个习惯,在我在网上搜索答案并通过我的手册 2 小时后,我终于分解并发布了问题,然后 5 分钟后弄清楚了。:) 我认为写作的行为这个问题对我的帮助比其他任何事情都多)

所以它正在工作......虽然我不会声称我了解它如何以及为什么工作的一切,所以我确实希望在我将我的程序提供给其他人使用时遇到一些问题。即,每个使用具有 Internet 连接的程序的人都能够打开到我的服务器的这个 smtp 连接吗?我不知道答案......我将不得不等待,看看,并了解更多。

谢谢!:)

-阿迪娜

于 2008-12-14T16:26:14.237 回答
3

目标地址是否与您的 smtp 服务器在同一主机上?如果不是,这将解释中继错误。

您使用的 SMTP 服务器必须是邮件消息的最终目的地或邮件交换中的第一跳。例如,如果您要从 gmail 地址向 yahoo 地址发送邮件,则第一个看到该邮件的邮件服务器必须是您的 gmail 服务器或 yahoo 服务器。中间的服务器将拒绝该消息,因为它们已禁用中继(以减少垃圾邮件等)。

如果它们是同一主机,您是否可以通过其他方式直接向其发送邮件?

通过 telnet 尝试此测试以查看您的 smtp 服务器是否正常运行:http ://www.messagingtalk.org/content/470.html

于 2008-12-14T15:12:11.453 回答
0

检查你的防火墙。2525的帖子开了吗?

于 2009-05-26T10:56:24.687 回答
0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;

namespace SendMail
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SmtpClient client = new SmtpClient("smtp.gmail.com", 25);
                MailMessage msg = new MailMessage();

                NetworkCredential cred = new NetworkCredential("x@gmail.com", "password");
                msg.From = new MailAddress("x@gmail.com");
                msg.To.Add("y@gmail.com");
                msg.Subject = "A subject";
                msg.Body = "Hello,Raffi";

                client.Credentials = cred;
                client.EnableSsl = true;
                label1.Text = "Mail Sended Succesfully";
                client.Send(msg);


            }
            catch
            {
                label1.Text = "Error";
            }
        }



    }
}
于 2013-06-05T11:42:18.520 回答