Using Email Class in Codeigniter (Advanced Way) - php

I want to send emails using Email Class(CodeIgniter) Problem is that
Email is sending so simple in text format...
I want to design email with (html, tables and colors) or What is the advanced-way for Emailing with CodeIgniter.

function signup(){
#stripped out the validation code
#stripped out the db insert code
$data = array(
'some_var_for_view'=>'Some Value for View'
);
$htmlMessage = $this->parser->parse('user/email/signup_html', $data, true);
$txtMessage = $this->parser->parse('user/email/signup_txt', $data, true);
#send the message
$this->email->from('test#webdevkungfu.com', 'CSSNinja');
$this->email->to($this->input->post('email_address'));
$this->email->subject('Account Registration Confirmation');
$this->email->message($htmlMessage);
$this->email->alt_message($txtMessage);
$this->email->send();
}
My problem is now solved with this code found from link below
http://www.webdevkungfu.com/email-templates-with-codeigniter/

Related

How to send email to multiple recipients laravel

I am trying to create an application where one of the features is to send email to multiple addresses, and it has not been easy. I used a foreach loop, but whenever an error occurs, most especially if the recipient mail address is not valid the application stops.
This is my code
public function sendemails(Request $request){
$email = $this->emailSetUp($request);
$emails = $email->recipients;
foreach ($emails as $value) {
try{
$mail = Mail::to($value)->send(new SendEmail($email));
}catch( \Swift_RfcComplianceException $e){
$pattern = '/[a-z0-9_\-\+\.]+#[a-z0-9\-]+\.([a-z]{2,4})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $e, $matches);
$match = implode(',',$matches[0]);
$mail_t_del = Email::where('email','LIKE', '%'.$match)->first();
$mail_t_del->delete();
Log::info($match .' '. 'deleted');
$email = $this->emailSetUp($request);
$mail = Mail::send(new SendEmail($email));
}
}
}
How can i
Send the message to multiple recipients and also make it fail proof, by continuing after the exception has been thrown.
How can i track the progress of the application i.e know the emails that has been sent and the on that has been rejected.
You can pass an array of emails.
see here for details
https://laravel.com/api/5.5/Illuminate/Contracts/Mail/Mailer.html#method_to
Also I suggest that you create a custom request to check to make sure that emails are valid before processing.
You can see how to do that here:
https://laravel.com/docs/5.7/requests
- Send the message to multiple recipients
pass all the emails in your mail class
Example:
Mail::to($users)->send(new SendEmail($yourData));
put your codes in try catch
so that you can ignore exception and continue to send other mails
- Track the progress
If you want to get which mails are sent or not
then handle it on catch statement exception and log it in file or DB
To send an email to multiple recipients without displaying the sent email to all recipients, try this:
This method will loop through the emails supplied for form or database. in this example the user IDs come from form requests, then, email is retrieved from the database for selected users.
foreach($request->get_emails as $i => $a){
$user = User::find($a);
Mail::send('emails.template', ['name' => $user['name'], 'body' => $request->body], function ($m) use($user) {
$m->from('info#example.com', 'Sender Name');
$m->to($user['email'], $user['name'])->subject('this is the subject');
});
}
Also, you may choose to display emails to all recipient. To do that, try:
$emails = ['eamil1#example.com', 'email2#example.com','email3#example.com'];
Mail::send('emails.template', [], function($m) use ($emails)
{
$m->to($emails)->subject('This is the email subject');
});

Why is the email is not send in this code? Magento

I am trying to send a email for a user when he fill a form and click the submit.I have created a controller in Magento and included the following code
public function sendMailAction(){
$html="put your html content hereblah blah";
$mail = Mage::getModel('core/email');
$mail->setToName('Your Name');
$mail->setToEmail('sadeeenadeee#gmail.com');
$mail->setBody('Mail Text / Mail Content');
$mail->setSubject('Mail Subject');
$mail->setFromEmail('Sender Mail Id');
$mail->setFromName("Msg to Show on Subject");
$mail->setType('html');// YOu can use Html or text as Mail format
try {
$mail->send();
Mage::getSingleton('core/session')->addSuccess('Your request has been sent');
$this->_redirect('');
}
catch (Exception $e) {
Mage::getSingleton('core/session')->addError('Unable to send.');
$this->_redirect('');
}
}
This is the function I am planning to use to send the email.Above controller function is called for the click of the submit button.
Then I configured the outgoing SMTP email in Magento admin panel.
System > Configuration-> Mail Sending Settings
I followed the above path and added the HOST and PORT in the Mail Sending Settings and saved the config.HOST and PORT are obtained from the email service provider.But when a user fills the form and click the submit,rather than sending a email browser tries to launch a app saying that,
THIS LINK NEEDS TO BE OPEN WITH AN APPLICATION
Can someone help me please?
I AM WORKING ON A HOSTED SITE
$emailTemplateVariables = array();
$EmailSenderName="Email Sender Name";
$EmailId="semder Email";
$emailTemplateVariables['key1'] = "data1";
$emailTemplateVariables['key2'] = "data2";
/* sent mail to //recepient */
$recipientEmail="abcd#xyz.com";
$sender = Array('name' => $EmailSenderName,
'email' => $EmailId);
$emailName = 'Email Name';
$translate = Mage::getSingleton('core/translate');
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('Any_email_template');
$emailTemplate->setSenderName($EmailSenderName)
->setSenderEmail($EmailId)
->setTemplateSubject($emailName);
$emailstatus=$emailTemplate->send($recipientEmail, $emailName, $emailTemplateVariables);
$translate->setTranslateInline(true);
if($emailstatus) {
//email send successfully
}
else {
//something went wrong
}
Please confirm that any mails in que for that enter the terminal command
mailq
$emailTemplate = Mage::getModel('core/email_template')->load(1); //1 is Transactional Emails id
if you want to try default the above

Sending html email in Codeigniter

I am sending a template html in codeigniter and in fact my email is working perfectly fine.
My problem is how i send a template of html to the email. I got an error because of the variables passed to.
public function send_email_accountability($C11, $C4, $C8,$C12)
{
date_default_timezone_set('Asia/Manila');
$message = $this->load->view('sample_html',$data,TRUE);
$this->load->library('email');
$this->email->set_mailtype("html");
$this->email->from('noreply#email.com', 'EMAIL');
$this->email->to($C11);
$this->email->subject('Accountability for'. $C12);
$this->email->message($message);
}
I receive the email but inside the email is php error because the $data cannot be passed to. I looked at other stackoverflow problems and it didn't help my problem.
public function send_email_accountability($C11, $C4, $C8,$C12)
{
date_default_timezone_set('Asia/Manila');
$this->load->library('email');
$data['title']='HELLO WORLD';
$this->email->from('noreply#email.com', 'EMAIL');
$this->email->to($C11);
$this->email->subject('Accountability for'. $C12);
$this->email->set_mailtype("html");
$msg = $this->load->view('sample_html',$data,TRUE);
$this->email->message($msg);
$this->email->send();
}
Try this one
use PHPmailer. It will help You. I also use it. You can get all information about PHPmailer from here
you are using a data array ($data) to the view, but no values is assigned to it,
just assign any value to array to avoid the error,
$data['logo_img'] = 'images/logo.png'; // add this line before loading the view
This logo image is located as $logo_img in the view sample_html...

Using a HTML Mail template with codeigniter

I am using the codeigniter email class to send emails when the user register to my website or perform some activity inside my website.
The thing is that, with this simple code below I can only send very simple HTML emails. And also I will have to pass the entire HTML message to the function. Is there any way so that I could load the entire template in the function itself and just pass a message which is to be placed inside the template as we do in codeigniter with views.
$message = 'Thank you for your order \n';
$message .= 'We will contact you soon';
$this->email($message);
public function email($message = NULL){
$this->load->library('email');
$this->email->mailtype('html');
$this->email->from('abbbba#gmail.com', 'Sohan Kc');
$this->email->to('abbbbaa#gmail.com');
$this->email->subject('Email Test');
$this->email->message($message);
$this->email->send();
}
Why don't you just do as you already stated? :)
The email classes message method requires a string to be passed. Just load a View and pass the returned string to the method.
public function email($message = NULL){
$this->load->library('email');
$mydata = array('message' => 'I am a message that will be passed to a view');
$message = $this->load->view('my_email_template', $mydata, true);
$this->email->mailtype('html');
$this->email->from('sohanmax2#gmail.com', 'Sohan Kc');
$this->email->to('sohanmax02#gmail.com');
$this->email->subject('Email Test');
$this->email->message($message);
$this->email->send();
}
I send emails but got the html code as body, I had to add the headers to get correct content like below and it will works out.
$this->email->set_header('MIME-Version', '1.0; charset=utf-8');
$this->email->set_header('Content-type', 'text/html');

How can add email signature in codeigniter?

I have a codeigniter function to send emails.Its working fine,but the only problem is email signature id not adding to my email. I am using gmail to send email. i set email signature in gmail configuration.
How can add email signature in codeigniter?
You can use views for this
// views/email_message.php
<?php echo $this->load->view('email/message', $message_data(), TRUE) ?>
<?php echo $this->load->view('email/signature', $signature_data(), TRUE) ?>
and then you can pass this to your email message:
// in your controller
$message = $this->load->view('views/email_message', $data(), TRUE);
// configure email options, etc.
...
$this->email->message($message);
// send the email

Categories