Jump to content
adrian

Email New User

Recommended Posts

found this in the wiremail logs

  Error in hnsmtp::send : cannot connect to smtp-server!

Share this post


Link to post
Share on other sites

Hi.

First of all, thanks for this great module! 
I do have one question: Is there a reason why this module is not "singular"?
To be clearer: adding ""singular": true" to the jsonfile.

I am having the automatic send option enabled, and use some custom api code to add new users in frontend-scope and backend.
According to the json info file the module gets autoloaded on "template=admin". So in Frontend I have to use $this->modules->get("EmailNewUserPortal");

Because my custom code gets executed in frontend and admin, I would have to check where I am, because if I do $this->modules->get("EmailNewUserPortal"); in backend there are two instances of the module running. This results in sending the NewUser Mail twice.

After adding the singular Option to your module, this issue has gone.
Perhaps there is another need to be not singular here wich I didn´t see? Just wanted to ask...

Thanks...

 

  • Like 2

Share this post


Link to post
Share on other sites
On 9/26/2016 at 4:49 AM, benbyf said:

found this in the wiremail logs

  Error in hnsmtp::send : cannot connect to smtp-server!

Sorry I missed this post, but I am hoping by now you have realized that this is an issue with your wireMail setup and not this module.

 

On 10/25/2016 at 3:42 AM, gingebaker said:

I do have one question: Is there a reason why this module is not "singular"?

Just an oversight on my part - thanks for the heads up and the solution - much appreciated.

It is fixed now!

 

  • Like 3

Share this post


Link to post
Share on other sites

Hi,

I'd like to add a styled email to new users but when I use the Email body field i can't use html. What would be the best way to add a custom email template?

  • Like 1

Share this post


Link to post
Share on other sites

Hi @Timothy de Vos - I could simply support HTML in that email body field and have the email sent as HTML along with a plain text version (automatically generated from the HTML version). I think that would be the easiest approach.

Would that suit your needs?

  • Like 1

Share this post


Link to post
Share on other sites
2 minutes ago, adrian said:

Hi @Timothy de Vos - I could simply support HTML in that email body field and have the email sent as HTML along with a plain text version (automatically generated from the HTML version). I think that would be the easiest approach.

Would that suit your needs?

Jeah i guess that would work!

Share this post


Link to post
Share on other sites
Just now, Timothy de Vos said:

Jeah i guess that would work!

You don't sound thrilled :)

Do you have any other ideas / preferences?

I could add support for pulling in a template stored in the file system, but I feel like that might be overkill for a simple email like this - I can't see it requiring very much structure/styling for a simple account registration email.

Share this post


Link to post
Share on other sites
1 minute ago, adrian said:

You don't sound thrilled :)

Do you have any other ideas / preferences?

I could add support for pulling in a template stored in the file system, but I feel like that might be overkill for a simple email like this - I can't see it requiring very much structure/styling for a simple account registration email.

Sorry... I mean that would be perfect! :)

And you're right it doesn't need much styling. I just like it to have the same feeling as the rest of the website.

Right now i've added a little extra code to have an extra option like {adminURL}. I'm registrating users that only work on the front-end. Each user is bound to a location and for the front-end login url I need the parent name of the location. So for now i added this extra code to the parseBody function:

  elseif($field == "location") {
      $pageId = $page->$field;
      $replacement = "http://".wire($pageId)->parent->name.".".wire('config')->httpHost;
  }

i don't know if there is an other easier way to do this?

Share this post


Link to post
Share on other sites

I have committed a new version which:

  • adds a new "From Name" field setting so that the email new users receive comes from your name/email, not just a raw email address.
  • adds support for HTML body text. A plain text version will be generated automatically from this and both sent with proper headers.
  • makes the parseBody method hookable, so you can define more complex field tag replacements.
    For example, this will accomplish @Timothy de Vos's needs:
$this->wire()->addHookBefore('EmailNewUser::parseBody', null, function($event) {
	$page = $event->arguments[2];
	$pageId = $page->location;
    $replacement = "http://".wire($pageId)->parent->name.".".wire('config')->httpHost;
	$event->arguments(0, str_replace('{location}', $replacement, $event->arguments[0]));
});

 

Please let me know if you have any problems with this new version!

Thanks to Timothy for helping to test this new version and as he noted, if you want full HTML support in the supplied CkEditor body input, you'll need to set:

config.allowedContent = true
  • Like 1

Share this post


Link to post
Share on other sites

I've just upgraded to the latest version (0.3.1) from a previous version which was working OK. I'm now getting the following error when trying to send the test email from admin (this previously worked):

Call to a member function new() on a non-object (line 158 of ***/site/modules/EmailNewUser/EmailNewUser.module) 

I see from the file in question that it's doing things with the password a that point but I'm not using the password generator at that point.

BTW, the site is running PW v2.7.2

Any ideas?

Share this post


Link to post
Share on other sites
41 minutes ago, prestoav said:

I've just upgraded to the latest version (0.3.1) from a previous version which was working OK. I'm now getting the following error when trying to send the test email from admin (this previously worked):


Call to a member function new() on a non-object (line 158 of ***/site/modules/EmailNewUser/EmailNewUser.module) 

I see from the file in question that it's doing things with the password a that point but I'm not using the password generator at that point.

BTW, the site is running PW v2.7.2

Any ideas?

I think the issue might be the PW version. I started using $mail->new() which I think maybe wasn't available in that version. Could you please clarify that it works if you change that line to:

$mailer = wireMail();

 

Share this post


Link to post
Share on other sites
54 minutes ago, prestoav said:

Hi, the error no longer appears but the test email never arrives.

Please try the version I just committed - I have just tested here on PW 2.7.2 and it's working fine.

Note that I am using horst's WireMailSMTP module, but I don't think that should matter.

  • Like 1

Share this post


Link to post
Share on other sites

Hi Adrian,

Yup, that now works perfectly, thanks for such a speedy response!

As it happens I'm also using Horst's WIreMailSMTP :-)

Geoff.

  • Like 1

Share this post


Link to post
Share on other sites
1 minute ago, prestoav said:

Yup, that now works perfectly, thanks for such a speedy response!

As it happens I'm also using Horst's WIreMailSMTP :-)

Excellent - sorry about the new bug in the first place :)

Share this post


Link to post
Share on other sites

Hi,

Does anyone know if it's possible to set the "Email Body" in multiple languages?

  • Like 1

Share this post


Link to post
Share on other sites
12 hours ago, Peejay said:

Hi,

Does anyone know if it's possible to set the "Email Body" in multiple languages?

It is now - please check the latest version just committed.

It now support ML subject and body fields and the user will receive the version associated with the language that you set in their profile.

Let me know if you find any problems.

  • Like 4

Share this post


Link to post
Share on other sites

Hi!
Great module - thanks for this, adrian!
Is there any possibility to send this user-email to admin at the same time ( without using another module )?
Thanks!!

Share this post


Link to post
Share on other sites

@itsberni,

Unless I misunderstand, you should set Bcc to the admin email prior to sending. The email copy will be sent in the same language. If you want the admin to receive the email in a different language, then you will have to repeat the process a second time addressing the email only to admin, and in their language.

Share this post


Link to post
Share on other sites

@rick ok! Thanks for advice....but, where  do i have to do this settings. In der EmailNewUser - Modul there ist no possibility.....

Share this post


Link to post
Share on other sites

Hi @itsberni,

I apologize. I just looked at the module and there is no Bcc option. As it is, you might try appending the admin email to the To address.

Share this post


Link to post
Share on other sites

Hi @itsberni - sorry for such a delayed response - I am just back from an extended time away from my computer.

I have added a new Bcc email field to the module config settings. All emails will be Bcc'd to the entered address automatically.

Please let me know how it goes for you.

 

  • Like 3

Share this post


Link to post
Share on other sites
On 04/07/2017 at 10:47 PM, adrian said:

I have added a new Bcc email field to the module config settings. All emails will be Bcc'd to the entered address automatically.

 

Thanks for implementing the Bcc field, @adrian! It works great on sites using WireMailSmtp.

However, on a site using the default WireMail implementation, the bcc() call will fail and abort the whole process. It seems the default WireMail interface does not (yet) have bcc() defined while it is available in WireMailSmtp and others.

I'd suggest doing a simple check for the bcc function. For that particular project, I have successfully used the following to fix it. Instead of (line 177):

if($this->data['bccEmail'] != '') $mailer->bcc($this->data['bccEmail']);

I inserted:

if($this->data['bccEmail'] != '') {
  if (method_exists($mailer, 'bcc')) {
    $mailer->bcc($this->data['bccEmail']);
  }
  else {
    $mailer->to($this->data['bccEmail']);
  }
} 

Since the default WireMail will send each to() recipient as a separate mail, the second to() call acts as a de facto bcc address. Maybe that will be enough, maybe you can think of a more sophisticated way of solving it.

  • Like 1

Share this post


Link to post
Share on other sites

Hi @d'Hinnisdaël - thanks for noticing this issue and putting together a fix. I am actually wondering if there is actually any point in using the bcc option even when it's available. Maybe I should just relabel it as "Notify other admin users" and make use of additional "To" email addresses. Maybe it should even support a comma-seperated list in case you want to notify more than one user.

Any thoughts on this before I implement?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. Field widths entered into the Template Field Widths inputfield are only applied if the Edit Template form is submitted with the Template Field Widths inputfield in an opened state. "Collapsed" is the recommended setting if you think you might also use core inputs for setting field widths in a template context. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By adrian
      Tracy Debugger for ProcessWire
      The ultimate “swiss army knife” debugging and development tool for the ProcessWire CMF/CMS

       
      Integrates and extends Nette's Tracy debugging tool and adds 35+ custom tools designed for effective ProcessWire debugging and lightning fast development
      The most comprehensive set of instructions and examples is available at: https://adrianbj.github.io/TracyDebugger
      Modules Directory: http://modules.processwire.com/modules/tracy-debugger/
      Github: https://github.com/adrianbj/TracyDebugger
      A big thanks to @tpr for introducing me to Tracy and for the idea for this module and for significant feedback, testing, and feature suggestions.
    • By adrian
      This module allows you to automatically rename file (including image) uploads according to a configurable format
      This module lets you define as many rules as you need to determine how uploaded files will be named and you can have different rules for different pages, templates, fields, and file extensions, or one rule for all uploads. Renaming works for files uploaded via the admin interface and also via the API, including images added from remote URLs.   Github: https://github.com/adrianbj/CustomUploadNames
      Modules Directory: http://modules.processwire.com/modules/process-custom-upload-names/
      Renaming Rules
      The module config allows you to set an unlimited number of Rename Rules. You can define rules to specific fields, templates, pages, and file extensions. If a rule option is left blank, the rule with be applied to all fields/templates/pages/extensions. Leave Filename Format blank to prevent renaming for a specific field/template/page combo, overriding a more general rule. Rules are processed in order, so put more specific rules before more general ones. You can drag to change the order of rules as needed. The following variables can be used in the filename format: $page, $template, $field, and $file. For some of these (eg. $field->description), if they haven't been filled out and saved prior to uploading the image, renaming won't occur on upload, but will happen on page save (could be an issue if image has already been inserted into RTE/HTML field before page save). Some examples: $page->title mysite-{$template->name}-images $field->label $file->description {$page->name}-{$file->filesize}-kb prefix-[Y-m-d_H-i-s]-suffix (anything inside square brackets is is considered to be a PHP date format for the current date/time) randstring[n] (where n is the number of characters you want in the string) ### (custom number mask, eg. 001 if more than one image with same name on a page. This is an enhanced version of the automatic addition of numbers if required) If 'Rename on Save' is checked files will be renamed again each time a page is saved (admin or front-end via API). WARNING: this setting will break any direct links to the old filename, which is particularly relevant for images inserted into RTE/HTML fields. The Filename Format can be defined using plain text and PW $page variable, for example: mysite-{$page->path} You can preserve the uploaded filename for certain rules. This will allow you to set a general renaming rule for your entire site, but then add a rule for a specific page/template/field that does not rename the uploaded file. Just simply build the rule, but leave the Filename Format field empty. You can specify an optional character limit (to nearest whole word) for the length of the filename - useful if you are using $page->path, $path->name etc and have very long page names - eg. news articles, publication titles etc. NOTE - if you are using ProcessWire's webp features, be sure to use the useSrcExt because if you have jpg and png files on the same page and your rename rules result in the same name, you need to maintain the src extension so they are kept as separate files.
      $config->webpOptions = array(     'useSrcExt' => false, // Use source file extension in webp filename? (file.jpg.webp rather than file.webp) ); Acknowledgments
      The module config settings make use of code from Pete's EmailToPage module and the renaming function is based on this code from Ryan: http://processwire.com/talk/topic/3299-ability-to-define-convention-for-image-and-file-upload-names/?p=32623 (also see this post for his thoughts on file renaming and why it is the lazy way out - worth a read before deciding to use this module). 
       
       
      NOTE:
      This should not be needed on most sites, but I work with lots of sites that host PDFs and photos/vectors that are available for download and I have always renamed the files on upload because clients will often upload files with horrible meaningless filenames like:
      Final ReportV6 web version for John Feb 23.PDF

×
×
  • Create New...