我做错了什么?我正在尝试使用带有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);
答案 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 @电子邮件列为非垃圾邮件,但现在它已按预期到达。请记住,您每天只有有限数量的中继电子邮件,因此请明智地使用它们!希望这会有所帮助!