API-интерфейс электронной почты на основе веб-интерфейса, который должен отправлять содержимое формы в виде электронной почты. Форма составлена ​​в формате HTML и должна вызывать API-интерфейс с использованием ajax или чего-либо еще. - PullRequest
0 голосов
/ 03 июля 2019

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 ()

...