C# - SMTP - GoDaddy - 发送电子邮件

时间:2012-06-14 01:42:18

标签: c# email smtp

我做错了什么?我正在尝试使用带有GoDaddy webhost的c#发送电子邮件。

SmtpClient client = new SmtpClient("relay-hosting.secureserver.net", 465);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("emailGODADDY", "password");

MailMessage message = new MailMessage("emailGODADDY", "otherEmail");
message.Subject = txtSubject.Text;
message.Body = txtContent.Value;

client.Send(message);

4 个答案:

答案 0 :(得分:5)

使用Go Daddy的共享主机帐户,您需要在端口25而不是端口465上发送电子邮件。此外,当您从主机发送时,relay-hosting.secureserver.net不需要您使用用户名和密码进行身份验证帐户。

答案 1 :(得分:0)

每个smtp服务器都有自己的凭据,与其他凭据不同。

  

根据microsoft client.UseDefaultCredentials不应该使用   如果可能的话。

您可以尝试省略这行代码.....

client.UseDefaultCredentials = false;

如果这不起作用,请尝试

client.EnableSsl = false;

因为某些服务器不使用安全连接。

您也可以使用此代码查看

client.DeliveryMethod = SmtpDeliveryMethod.Network;

答案 2 :(得分:0)

只需在行下方注释掉,这样就可以正常工作

public function store(Request $request)
{
    $rules=[
        'suggest_price'=>'required|numeric',
        'deadline'=>'required',
        'user_id'=>'required',

    ];
    $validation= \Illuminate\Support\Facades\Validator::make($request->all(),$rules);

    if($validation->failed()){
        return response()->json([
            'success'=>true,
            'message'=>'Invalid Input Data!',
            'data'=>null
        ],400);
    }

    $user=User::find($request->user_id);
    if(is_null($user)){
        return response()->json([
            'success'=>false,
            'message'=>'This user is not exist!',
            'data'=>null
        ],404);
    }
    $question=$user->questions()->create([
        'title'=>$request->title,
        'description'=>$request->description,
        'status'=>$request->status,
        'suggest_price'=>$request->suggest_price,
        'deadline'=>$request->deadline,
        'course_id'=>$request->course_id,
    ]);
    $user->save();
    if(!is_null($request->file())){
        $format=$request->file('file')->getClientOriginalExtension();
        $size=$request->file('file')->getSize();
        $name='questionId-'.$question->id.'-userId '.$user->id.'.'.$format;

        if($size>$this->MAX_SIZE_FILE){
            return response()->json([
                'success'=>false,
                'message'=>'size of file is grater than max-size-file!'
            ],400);
        }
        $request->file('file')->move(public_path('files'),$name);

        $file=new file();
        $file->link=$name;
        $file->format=$format;
        $file->size=$size;
        $fileId=$question->files()->save($file)->id;

        $file->update(['link'=>'file '.$fileId.'-'.$name,]);
        $question->save();
    }
    return response()->json([
        'success'=>true,
        'message'=>'update successfully',
        'data'=>$user->questions->id,
    ],200);
}

也使用端口25。

答案 3 :(得分:0)

好!我已经弄清楚了。

哇,我花了很多时间试图启动并运行它。我有一个带有单个Office365电子邮件帐户的Plesk(共享)经济Windows托管。我了解到很难创建无法连接到smtp.office365.com的SMTP客户端的困难方法,因为此共享主机软件包的端口587被阻止。 TXT记录,SPF记录也无济于事。很多浪费的时间。

但是,a,这正是对我有用的。我将以下内容添加到了web.config中,尽管我认为您可以将相同的信息构建到SMTP客户端对象中。不过,这很好。随你。

<system.net>
  <mailSettings>
    <smtp from="noreply@MyDomain.com">        
      <network host="relay-hosting.secureserver.net" port="25" />        
    </smtp>
  </mailSettings>
</system.net>

在后面的代码中,我确保MailMessage中使用的FROM地址与web.config中的FROM值完全匹配。这真的重要吗?不确定,但是它们匹配,并且可行。随便。

发件人地址(noreply @)不作为电子邮件存在,也不是别名等。它只是网站托管所在域中的东西。

我的TO地址是从web.config(AppSettings [“ SendTo”])中检索到的。这是我生活在该域中的真实电子邮件地址(我的Office365电子邮件地址)。我不确定您是否可以将电子邮件发送到域外的其他地方,因为我尚未进行测试。

...很明显,MailMessage(msg)不完整...

msg.To.Add(new MailAddress(ConfigurationManager.AppSettings["SendTo"].ToString()));
msg.From = new MailAddress("noreply@MyDomain.com");


var smtp = new SmtpClient 
{       
 // nothing is needed here  
};
smtp.Send(msg);

创建您的客户并发送消息!

是的!我不得不将noreply @电子邮件列为非垃圾邮件,但现在它已按预期到达。请记住,您每天只有有限数量的中继电子邮件,因此请明智地使用它们!希望这会有所帮助!