使用sendgrid和GCloud发送PHP laravel邮件

我的问题如下;我正在用Laravel 5.4做一个项目,我想从系统发送邮件,问题是我使用sendgrid来完成它,而在本地它只是发送正常,但是当我部署在Google Cloud邮件中时不被发送,它抛出的错误是 “连接如超时#110”使用sendgrid和GCloud发送PHP laravel邮件

这里是我的代码: .ENV

MAIL_DRIVER=smtp 

MAIL_HOST=smtp.sendgrid.net

MAIL_PORT=587

MAIL_USERNAME=MY-USERNAME

MAIL_PASSWORD=MY-PASS

MAIL_ENCRYPTION=tls

MAIL_FROM_NAME="MY-NAME"

MAIL_FROM_ADDRESS=MY-USER

SENDGRID_API_KEY='MY-API-KEY'

我的控制器:

/** 

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function factura(request $request)

{

$this->validate($request, [

'Student_name' => 'required',

'datos_facturación' => 'required',

'cuit' => 'required',

'facturaconceptopago' => 'required',

'servicio' => 'required',

'monto' => 'required|max:16',

'details' => 'required',

],

[

'Student_name.required' => 'Debe introducir el nombre del Alumno.',

'datos_facturación.required' => 'Debe seleccionar que datos de facturación usará.',

'cuit.required' => 'Debe introducir el número de CUIT.',

'facturaconceptopago.required' => 'Elija el cocepto de su pago.',

'servicio.required' => 'Seleccione el servicio por el que hará la factura.',

'monto.required' => 'Ingrese el monto a facturar.',

'details.required' => 'Ingrese los detalles de la facturación.',

]

);

$post = $request->all();

$student = Student::find($post['id_hidden']);

$Represen = Representative::find($student->representative_id);

$cant = Student::getRepresentativeId($student->representative_id);

$cont = count($cant);

if(isset($post['hermanos']) && $post['hermanos'] == 'on'){

$hermano = 1;

if($cont > 1){

$student = $cant;

$students = $cant;

}else{

$students = $student;

}

}else{

$hermano = 0;

$students = $student;

$cont = 1;

}

$school = new School;

$grade = new Grade;

//recuperar los precios activos

Date::setLocale('es');

$date = Date::now();

$today = $date->format('Y-m-d');

$start = Date::now()->startOfMonth()->format('Y-m-d');

$end = Date::now()->endOfMonth()->format('Y-m-d');

$priceObject = Price::getPrice($today, $start);

$price_lunch = $priceObject->lunch_price;

$price_home = $priceObject->vianda_price;

$invoice = InvoiceHistoric::max('id');

$Invoice = new InvoiceHistoric;

$Invoice->student_id = $post['id_hidden'];

$Invoice->out_of_date = $post['outofdate'];

$Invoice->emision_date = date("Y-m-d");

$Invoice->Servicio = $post['servicio'];

$Invoice->invoice_type = $post['invoice_hidden'];

$Invoice->discount = $post['discount'];

$Invoice->details = $post['details'];

$Invoice->numero = $invoice+1;

$Invoice->hermano = $hermano;

$Invoice->concepto_pago = $post['facturaconceptopago'];

if($post['facturaconceptopago'] == 1)

{

$Invoice->monto = $post['monto'];

}else{

$Invoice->monto = $student['debt'] ;

}

$Invoice->save();

$pdf = PDF::loadView('invoices.factura_pdf', compact('cont','post','student','invoice','students','school', 'grade'));

$folder = storage_path('Facturas/');

if (!file_exists($folder)) {

File::makeDirectory($folder);

$path = storage_path('Facturas/')."Factura_".$Invoice->numero."_".$Invoice->invoice_type.".pdf";

$pdf->save($path);

}else{

$path = storage_path('Facturas/')."Factura_".$Invoice->numero."_".$Invoice->invoice_type.".pdf";

$pdf->save($path);

}

switch ($request->boton_enviar) {

case 'descargar':

if($Invoice->invoice_type == 'Resumen'){

return $pdf->download('Resumen.pdf');

}else{

return $pdf->download('Factura.pdf');

}

break;

case 'enviar_mail':

$data = ['message' => 'Servicio de Envio Automático',

'students' => $students,

'cont' => $cont,

'date' => $date,

'path' => $path,

'student' => $student,

'representative' => $Represen];

$mails = explode(';' ,$Represen->emails);

Mail::to($mails, 'Representante de '.$student->name)->send(new TestEmail($data));

return redirect()->route('Factura-lista');

break;

}

}

TestEmail.php:

<?php 

namespace App\Mail;

use Illuminate\Bus\Queueable;

use Illuminate\Mail\Mailable;

use Illuminate\Queue\SerializesModels;

use Illuminate\Contracts\Queue\ShouldQueue;

class TestEmail extends Mailable

{

use Queueable, SerializesModels;

public $data;

public function __construct($data)

{

$this->data = $data;

}

public function build()

{

$address = '[email protected]';

$subject = 'Servicio de Envio automático';

$name = 'DHSystem';

$headerData = [

'category' => 'category',

'unique_args' => [

'variable_1' => 'abc'

]

];

$header = $this->asString($headerData);

$this->withSwiftMessage(function ($message) use ($header) {

$message->getHeaders()

->addTextHeader('X-SMTPAPI', $header);

});

$message = $this->data['message'];

$students = $this->data['students'];

$cont = $this->data['cont'];

$date = $this->data['date'];

$path = $this->data['path'];

$student = $this->data['student'];

$representative = $this->data['representative'];

return $this->view('emails.sendmail', compact('message',

'students',

'cont',

'date',

'path',

'student',

'representative'))

->from($address, $name)

->cc($address, $name)

->bcc($address, $name)

->replyTo($address, $name)

->subject($subject)

->attach($path)

->with([ 'data' => $this->data ]);

}

private function asJSON($data)

{

$json = json_encode($data);

$json = preg_replace('/(["\]}])([,:])(["\[{])/', '$1$2 $3', $json);

return $json;

}

private function asString($data)

{

$json = $this->asJSON($data);

return wordwrap($json, 76, "\n ");

}

}

我使用这个页面的引用:https://sendgrid.com/docs/Integrate/Frameworks/laravel.html

当我从我的地方说,它正在sendt但问题带有GCloud,我已经使用2525端口已经tryed和它的同

回答:

您不能使用GMAIL作为您的发送邮件功能的电子邮件服务提供商。您可以使用sendgrid,但您首先需要有一个sendgrid帐户,然后您必须拥有对域管理器的所有控制权,以便您可以更新您的DKIM和SPF设置,以便验证您的所有权或对该特定访问权限具有管理访问权限。

您可能还想考虑mailchimp的mandrill服务,尽管它现在是付费服务,但这很容易实现。或者Mailjet。对于测试,如果您只是测试将像生产一样行事的电子邮件服务,您可能会检查sendblue。

以上是 使用sendgrid和GCloud发送PHP laravel邮件 的全部内容, 来源链接: utcz.com/qa/257510.html

回到顶部