Tbh, я не знаю, возможно ли это вообще, но я сделал веб-сайт с контактной страницей и хочу отправить содержимое формы, например, имя, адрес электронной почты, сообщение, как электронное письмо моему боссу. До сих пор я создал веб-интерфейс API с кодом SMTP. Проблема в том, что сайт сделан в HTML и CSS, а не в визуальной студии.
Я создал API и вызвал его в HTML, используя jquery, но получил ошибку, которую не могу решить
SMTP-сервер требует безопасного соединения или клиент не был
прошедшая проверка.
Ответ сервера был:
5.5.1 Требуется аутентификация.
Пожалуйста, скажите мне, есть ли лучший способ сделать это, поскольку я абсолютный новичок.
Я попробовал менее безопасный вариант в Google, изменил пароль на более надежный, добавил настройки в web.config
public class EmailController : ApiController
{
[HttpGet,HttpPost]
public string sendemail(Contact data)
{
StringBuilder strBody = new StringBuilder();
///For ONLINE
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");
NetworkCredential basicCredential = new NetworkCredential("abc@gmail.com", "Switch between devices");
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = true;
smtpClient.Credentials = basicCredential;
MailMessage message = new MailMessage();
MailAddress From = new MailAddress(data.Email);
message.From = From;
MailAddress To = new MailAddress("abc@gmail.com");
message.To.Add("abc@gmail.com");
message.To.Add(data.Email);
//message.CC.Add("");
message.Bcc.Add("abc@gmail.com");
message.Subject = "User Contacting";
message.Body = strBody.ToString();
message.IsBodyHtml = true;
smtpClient.Send(message);
message.Dispose();
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
return "value";
}
}
<form id="contact-form" action="http://localhost:53736/api/Email/sendemail" onclick="UserAction()" method="POST" >
<div class="col-md-6 col-sm-6">
<input type="text" class="form-control" name="name" placeholder="Name" required="">
</div>
<div class="col-md-6 col-sm-6">
<input type="email" class="form-control" name="email" placeholder="Email" required="">
</div>
<div class="col-md-6 col-sm-6">
<input type="phone" class="form-control" name="phone" placeholder="phone" required="">
</div>
<div class="col-md-12 col-sm-12">
<textarea class="form-control" rows="5" name="message" placeholder="Message" required=""></textarea>
</div>
<div class="col-md-offset-8 col-md-4 col-sm-offset-6 col-sm-6">
<button id="submit" onclick="submitForm()" type="submit" class="form-control" name="submit" value="Send" >Send Message</button>
</div>
</form>
<script type="text/javascript">
const postUrl = 'http://localhost:53736/api/Email/sendemail';
function UserAction() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
xhttp.open("POST", "http://localhost:53736/api/Email/sendemail", true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send("Your JSON Data Here");
}
function makeJSON(data) {
return {
name: form.title.value,
email: form.email.value,
phone: form.phone.value,
message:form.message.value,
};
}
</script>
Это ошибка, которую я получаю:
Произошла ошибка.
SMTP-сервер требует безопасного соединения или клиент не был
проверку подлинности. Ответ сервера: 5.5.1 Требуется аутентификация.
Узнайте больше на
System.Net.Mail.SmtpException
в
System.Net.Mail.MailCommand.CheckResponse (SmtpStatusCode statusCode,
Ответ строки) в System.Net.Mail.MailCommand.Send (SmtpConnection
conn, команда Byte [], MailAddress from, логический allowUnicode) в
System.Net.Mail.SmtpTransport.SendMail (отправитель MailAddress,
MailAddressCollection получателей, String deliveryNotify, Boolean
allowUnicode, SmtpFailedRecipientException & exception) в
System.Net.Mail.SmtpClient.Send (сообщение MailMessage) в
WebApplication3.Controllers.EmailController.sendemail (контактные данные) в
C: \ Users \ Admin \ Source \ Repos \ WebApplication3 \ Контроллеры \ EmailController.cs: линия
45 at lambda_method (Закрытие, Объект, Объект []) в
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor. <> C__DisplayClass6_1.b__3 (Объект
экземпляр, Object [] methodParameters) в
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute (Объект
экземпляр, Object [] arguments) в
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync (HttpControllerContext
controllerContext, IDictionary`2 аргументы, CancellationToken
cancellationToken) --- Конец стека трассировки из предыдущего места, где
исключение было брошено --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
задача) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) в
System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext ()
--- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
задача) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) в
System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext ()
--- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
задача) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) в
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext ()