使用内存流时,SMTP mail.send()C#.net核心API项目中出现获取对象引用未设置错误
我有一个.docx模板,其中定义了一些动态显示字符串,如下所示使用内存流时,SMTP mail.send()C#.net核心API项目中出现获取对象引用未设置错误,c#,asp.net-web-api,.net-core,smtp,memorystream,C#,Asp.net Web Api,.net Core,Smtp,Memorystream,我有一个.docx模板,其中定义了一些动态显示字符串,如下所示 {{FirstName}}, {{ContactNumber}}",{{EmailId}} 现在我需要阅读这个.docx文件,需要用它的等价文本替换上面的文本 需要将该文档作为附件发送给用户。这就是我想要达到的目标 到目前为止,我编写了这样的代码 string content = System.IO.File.ReadAllText(path); content.Replace("{{FirstName}
{{FirstName}}, {{ContactNumber}}",{{EmailId}}
现在我需要阅读这个.docx文件,需要用它的等价文本替换上面的文本
需要将该文档作为附件发送给用户。这就是我想要达到的目标
到目前为止,我编写了这样的代码
string content = System.IO.File.ReadAllText(path);
content.Replace("{{FirstName}}", objUser.FirstName);
content.Replace("{{ContactNumber}}", objUser.Contact);
content.Replace("{{EmailId}}", objUser.EmailId);
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.WriteLine(content);
writer.Flush();
stream.Position = 0;
using (var client = new SmtpClient())
{
client.Host = "relay-hosting.secureserver.net";
client.Port = 25;
using (var emailMessage = new MailMessage())
{
System.Net.Mime.ContentType contentType = new
System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
var coverAttachment = new Attachment(stream, contentType);
coverAttachment.ContentDisposition.FileName = "CoverLetter.pdf";
emailMessage.Attachments.Add(coverAttachment);
emailMessage.To.Add(new MailAddress(value.toemail));
emailMessage.CC.Add(new
MailAddress("My To Address"));
emailMessage.From = new MailAddress(_configuration["Email:Email"]);
emailMessage.Subject = value.subject;
emailMessage.Body = message;
emailMessage.IsBodyHtml = true;
emailMessage.BodyEncoding = Encoding.UTF8;
emailMessage.SubjectEncoding = Encoding.Default;
emailMessage.Priority = MailPriority.High;
emailMessage.ReplyToList.Add(new MailAddress(_configuration["Email:Email"]));
//在调用client.send()之前
我有一个类似的代码
client.SendCompleted += (s, e) =>
{
client.Dispose();
emailMessage.Dispose();
writer.Dispose();
};
这里有什么我做错的吗?两个观察结果:
更多信息:Hi当我使用SendAsync()时,我遇到了超时错误。嘿,我尝试了Send()和SendAsync()(SendAsync()不带using块),效果很好。您可以检查附件大小,或者尝试使用其他SMTP服务器吗?对于SendAsynch UserToken,如果不适用,我可以将其作为NULL传递?此外,我也可以使用SendMailAsync进行此操作?System.Net.Internals.SocketExceptionFactory.ExtendedSocketException:'连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应'这就是我的情况getting@NidhinPaul-是的,我尝试使用NULL作为用户令牌。Send()或SendAsync()中有没有一个适合您?并且,您可以共享您正在使用的SendMailAsync的代码。