По-видимому, файлы, отличные от .cs
, не упакованы и должны быть добавлены вручную в папку publish
.
Я пример ниже для отправки HTML-файл в качестве прикрепленного электронной почты:
и файлы структуры:
project.json
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"runtimes": {
"win10-x64": {},
"win10-x86": {}
},
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",
"Microsoft.NETCore.DotNetHostPolicy": "1.0.1",
"MailKit" : "1.10.0"
},
"frameworks": {
"netstandard1.6": { }
}
}
program.cs
using System;
using System.IO; // for File.ReadAllText
using MailKit.Net.Smtp; // for SmtpClient
using MimeKit; // for MimeMessage, MailboxAddress and MailboxAddress
using MailKit; // for ProtocolLogger
namespace sendHTMLemail
{
public class newsLetter
{
public static void Main()
{
var message = new MimeMessage();
message.From.Add(new MailboxAddress("INFO", "[email protected]"));
message.To.Add(new MailboxAddress("MYSELF", "[email protected]"));
message.Subject = "Test Email";
var bodyBuilder = new BodyBuilder();
string htmlFilePath = "./html-files/msg.html";
bodyBuilder.Attachments.Add("./html-files/msg.html");
bodyBuilder.HtmlBody = File.ReadAllText(htmlFilePath);
message.Body = bodyBuilder.ToMessageBody();
using (var client = new SmtpClient (new ProtocolLogger ("smtp.log")))
{
client.Connect("smtp.office365.com", 587);
try{
client.Authenticate("[email protected]", "[email protected]");
}
catch{
Console.WriteLine("Authentication Faild");
}
try
{
client.Send(message);
}
catch (Exception)
{
Console.WriteLine("ERROR");
}
client.Disconnect(true);
}
}
}
}
выше работала очень хорошо, и publish
был подготовлен выполнив следующие команды:
dotnet restore
dotnet build -r win10-x64
dotnet build -r win10-x86
dotnet publish -c release -r win10-x64
dotnet publish -c release -r win10-x86
, но при выполнении файла .exe
в папке publish
, это дало ошибку, что файл pathTo/html-files/msg.html
не найден ,
После того, как я скопировал папку, необходимую для publish
папку, как показано ниже, все работало отлично:
ПРИМЕЧАНИЕ Если не нужен/статический файл общественности будет виден пользователю , затем вы можете сжать их, а затем прочитать их из потока памяти, как объяснено. here
Вы используете файл .exe в каталоге 'publish'? – svick
Да @svick, на самом деле я пробовал и то, и другое внутри «публиковать», а другое за его пределами, никто из них не работал. –
Каков был рабочий каталог при запуске? – svick