Jump to content
Pierre-Luc

WireMail Mailgun

Recommended Posts

Hi Pierre-Luc

Does this Module with an unverified MailGun domain?

IE where a domain hasn't had any MailGun DNS changes and has simply been added to the MailGun Control panel as a domain?

I'm just testing it with PW 3 and am wondering why it's not working. I've identified and fixed a previous VPS issue.

Share this post


Link to post
Share on other sites

@Peter Knight are you seeing anything in the Mailgun logs in your PW admin panel?

Edit: If you can, could you post a pastebin of your /site/assets/logs/mailgun.txt. Either here or send me a PM.

Share this post


Link to post
Share on other sites

Hi Pierre-Luc,

First of all the module is working great for me at the moment. I haven't pushed it to hard yet but has done everything I've asked of it so far.

I have hit a small issue with mailgun and their complaint system and API. 

If people didn't know. If an email recipient accidentally(or on purpose) clicks the "junk" mail button it sends a complaint to Mailgun and they then block you from sending mail to that address, unless you clear/delete the complaint through the API.

As I'm somewhat new to web development, it's hard for me to understand how to even get started.

I was wondering if you or anyone had plans to add a way to administer the complaints from this module? or to check for complaints and delete any that are there before sending the email?

Cheers

  • Like 3

Share this post


Link to post
Share on other sites

@ Clarkey1891

Have you had any issues with MailGun's reports dashboard? I notice that although my mails are sending, the stats dashboard doesn't log this. Possibly it's because I'm using an unverified domain (no DNS records have been updated) but wondered if yours was working ?

Share this post


Link to post
Share on other sites

I was wondering if you or anyone had plans to add a way to administer the complaints from this module? or to check for complaints and delete any that are there before sending the email?

I'll have to look into Mailgun's webhooks API, and see if it's possible to get incoming notices from this.

Have you had any issues with MailGun's reports dashboard? I notice that although my mails are sending, the stats dashboard doesn't log this. Possibly it's because I'm using an unverified domain (no DNS records have been updated) but wondered if yours was working ?

The stats sometimes take some time to update, but never really long. If you really want to see what's going on, the Logs tab on Mailgun is much more efficient and is pretty much instant.

I would really recommend that you do set your SPF and DKIM, as there are a bunch of penalties on accounts who don't.. https://documentation.mailgun.com/quickstart-sending.html#verify-your-domain

  • Like 2

Share this post


Link to post
Share on other sites

@ Peter Knight

sorry Peter I'm not getting any issues with the reports but I've also completed the verification process on the domain.

@ Pierre-Luc

Thanks, anything would be a great help

Share this post


Link to post
Share on other sites

@Pierre-Luc

thanks for this module, everything seems to be working well and i greatly appreciate all the time you put into it; Mailgun is great, and i can see myself using it a lot in the future for transactional emails in processwire. :)

My only issues are probably more about adjusting from Mandrill to Mailgun, i do like the Mandrill interface in terms of seeing the outbound activity list, sender, status, subject, view content etc; it's a bit more user friendly; also, this may be how i have it configured but the from address on mailgun shows a "sent by " and then a long email address like person@mg.domain.com ; i know i'm going to get some complaints from clients if that is something that can't be changed, and they may just prefer paying the $10/month mailchimp minimum plan to carry on with Mandrill..

Share this post


Link to post
Share on other sites

@Pierre-Luc

thanks for this module, everything seems to be working well and i greatly appreciate all the time you put into it; Mailgun is great, and i can see myself using it a lot in the future for transactional emails in processwire. :)

My only issues are probably more about adjusting from Mandrill to Mailgun, i do like the Mandrill interface in terms of seeing the outbound activity list, sender, status, subject, view content etc; it's a bit more user friendly; also, this may be how i have it configured but the from address on mailgun shows a "sent by " and then a long email address like person@mg.domain.com ; i know i'm going to get some complaints from clients if that is something that can't be changed, and they may just prefer paying the $10/month mailchimp minimum plan to carry on with Mandrill..

My pleasure!

The sent by line usually shows when your DKIM / SPF isn't set, make sure you do.

Share this post


Link to post
Share on other sites

ok thanks - i followed their recommendation of the mg subdomain but i guess i need to now add all of the sending domains and dkim records for those domains, at least that's how it is with Mandrill...

Share this post


Link to post
Share on other sites

Well you don't really need to have specific email domains unless you expect to have incoming emails through Mailgun. If your main domain has MX records you can just have SPF and DKIM in your TXT entries.

You just need to make sure your outgoing email uses the same domain as the one which is set in your email's "from". When on gmail/gapps with a custom domain for example, it's good to test reception on another domain since Google doesn't like being sent email to an email address "owned" by its own servers but not originating from it and will usually display the originating server as a security measure. It won't generally show on addresses on other domains. The reason it is that way is to prevent address spoofing, since the way email is architected, you can send any email from any server using any email address and nobody would know. As you understand that could have pretty bad consequences in different scenarios, which is why Sender Policy Framework (SPF) and

DomainKeys Identified Mail (DKIM) exist. It might feel annoying and troublesome but in reality it's just good practice. Email is complicated. ;)

  • Like 2

Share this post


Link to post
Share on other sites

right i just checked and i do have all of the spf and dkim records correctly done but i think you are saying that i should not use the mg subdomain and change that to the normal domain so i don't get those sent by things..  i wonder if you can have both mailgun and mandrill txt records

Share this post


Link to post
Share on other sites

Yep, just change it to the normal domain and it'll show correctly as long as the From address is the same as the MG domain.

What I do worry about, and it is a lesser issue you only run into when switching between WireMail modules, is that they don't all have the same functions or parameters so it's just something to check when you switch. A simple bit of search and replace in your favourite editor and you're sorted though :)

Share this post


Link to post
Share on other sites

Yep, just change it to the normal domain and it'll show correctly as long as the From address is the same as the MG domain.

What I do worry about, and it is a lesser issue you only run into when switching between WireMail modules, is that they don't all have the same functions or parameters so it's just something to check when you switch. A simple bit of search and replace in your favourite editor and you're sorted though :)

sure enough, it works like you said! no more 'sent by'...!

good point though about wiremail - i currently use horst's wiremail module and am extensively using the functions for attachments and probably more;

i wonder if when i get to the stage of switching that site over to mailgun, if i'll need to use the SMTP connection option, instead of API..

Share this post


Link to post
Share on other sites

Hi Luc,

I am not sure if you can help me with this but I'll try anyway...I am using this module to send transaction email for my online store but I am not sure if I got this setup correctly. So my issue is: the email from mailgun is sent straight to spam and after looking into it, there is no mailed-by/sent-by (which I reckon is the issue it went to spam) in the email header. However when I tested it manually using the curl command (as per example here: https://documentation.mailgun.com/quickstart-sending.html#send-via-smtp) on the server (digital ocean) server, it went ok (not being sent to spam).

I also notice when using the curl command the IP address from which the email was sent is Mailgun's IP Address (refer to the details below) but when using this module the IP address is the IP address of the digital ocean ubuntu box. I am not sure which one it should be, but I reckon it should be the IP address of the box and not the mailgun API IP address?

I know this is probably not related to your module direcly but if you can help and potentially point me to the right direction, I really appreciate it. Thank you in advanced!

Mailgun Details

State: Active
IP Address: 209.61.151.224
SMTP Hostname: smtp.mailgun.org
API Base URL: https://api.mailgun.net/v3/v2.weareheim.co

Share this post


Link to post
Share on other sites

Hmm hard to say, but do you see any error message either on the module's log or on Mailgun itself?

What are your current options set to?

Also are your SPF and DKIM set?

Share this post


Link to post
Share on other sites

Hi Luc,

I know what the issue is but I dont know how to solve it and it probably has nothing to do with your module anyway. The issue is the module sends the email using the underlying MTA in my linux box in this case sendmail. Sendmail somehow use the box IP address instead of the IP address of the domain assigned in my mailgun account. I dont really understand how to force sendmail to use mailgun ip address and have been trying here and there but no luck whatsoever.

So, in the end I decided to install exim4 and use smtp settings which works ok. Maybe, I play around with it in the future to resolve this. If anyone here has unix experience with sendmail can point to the direction, really appreciate it. :D

Share this post


Link to post
Share on other sites

Hmmm....interesting,

So I don't need to install sendmail/exim/postfix etc? I tried that before but no luck....maybe I have a look again closely

Share this post


Link to post
Share on other sites

but I thought send() method of wireMail is looking for MTA? no?

are we using wireMail or WireMail? this is completely different question though

Share this post


Link to post
Share on other sites

Hi Luc,

I find out what the issue is, I installed your module alongside with WireMail for css inline etc. So, I uninstalled that module and this works like a charm! Thank you!

Cheers

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
      Repeater Images
      Adds options to modify Repeater fields to make them convenient for "page-per-image" usage. Using a page-per-image approach allows for additional fields to be associated with each image, to record things such as photographer, date, license, links, etc.
      When Repeater Images is enabled for a Repeater field the module changes the appearance of the Repeater inputfield to be similar (but not identical) to an Images field. The collapsed view shows a thumbnail for each Repeater item, and items can be expanded for field editing.
      Screencast

      Installation
      Install the Repeater Images module.
      Setup
      Create an image field to use in the Repeater field. Recommended settings for the image field are "Maximum files allowed" set to 1 and "Formatted value" set to "Single item (null if empty)". Create a Repeater field. Add the image field to the Repeater. If you want additional fields in the Repeater create and add these also. Repeater Images configuration
      Tick the "Activate Repeater Images for this Repeater field" checkbox. In the "Image field within Repeater" dropdown select the single image field. You must save the Repeater field settings to see any newly added Image fields in the dropdown. Adjust the image thumbnail height if you want (unlike the core Images field there is no slider to change thumbnail height within Page Edit). Note: the depth option for Repeater fields is not compatible with the Repeater Images module.
      Image uploads feature
      There is a checkbox to activate image uploads. This feature allows users to quickly and easily add images to the Repeater Images field by uploading them to an adjacent "upload" field.
      To use this feature you must add the image field selected in the Repeater Images config to the template of the page containing the Repeater Images field - immediately above or below the Repeater Images field would be a good position.
      It's recommended to set the label for this field in template context to "Upload images" or similar, and set the visibility of the field to "Closed" so that it takes up less room when it's not being used. Note that when you drag images to a closed Images field it will automatically open. You don't need to worry about the "Maximum files allowed" setting because the Repeater Images module overrides this for the upload field.
      New Repeater items will be created from the images uploaded to the upload field when the page is saved. The user can add descriptions and tags to the images while they are still in the upload field and these will be retained in the Repeater items. Images are automatically deleted from the upload field when the page is saved.
      Tips
      The "Use accordion mode?" option in the Repeater field settings is useful for keeping the inputfield compact, with only one image item open for editing at a time. The "Repeater item labels" setting determines what is shown in the thumbnail overlay on hover. Example for an image field named "image": {image.basename} ({image.width}x{image.height})  
      https://github.com/Toutouwai/RepeaterImages
      https://modules.processwire.com/modules/repeater-images/
    • By EyeDentify
      Hello There Guys.

      I am in the process of getting into making my first modules for PW and i had a question for you PHP and PW gurus in here.

      I was wondering how i could use an external library, lets say TwitterOAuth in my PW module.
      Link to library
      https://twitteroauth.com/

      Would the code below be correct or how would i go about this:
      <?PHP namespace ProcessWire; /* load the TwitterOAuth library from my Module folder */ require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; class EyeTwitter extends WireData,TwitterOAuth implements Module { /* vars */ protected $twConnection; /* extend parent TwitterOAuth contructor $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret); */ public function myTwitterConnection ($consumer_key, $consumer_secret, $access_token, $access_token_secret) { /* save the connection for use later */ $this->twConnection = TwitterOAuth::__construct($consumer_key, $consumer_secret, $access_token, $access_token_secret); } } ?> Am i on the right trail here or i am barking up the wrong tree?
      I don´t need a complete solution, i just wonder if i am including the external library the right way.
      If not, then give me a few hint´s and i will figure it out.

      Thanks a bunch.

      /EyeDentify
    • By dimitrios
      Hello,
      this module can publish content of a Processwire page on a Facebook page, triggered by saving the Processwire page.
      To set it up, configure the module with a Facebook app ID, secret and a Page ID. Following is additional configuration on Facebook for developers:
      Minimum Required Facebook App configuration:
      on Settings -> Basics, provide the App Domains, provide the Site URL, on Settings -> Advanced, set the API version (has been tested up to v3.3), add Product: Facebook Login, on Facebook Login -> Settings, set Client OAuth Login: Yes, set Web OAuth Login: Yes, set Enforce HTTPS: Yes, add "http://www.example.com/processwire/page/" to field Valid OAuth Redirect URIs. This module is configurable as follows:
      Templates: posts can take place only for pages with the defined templates. On/Off switch: specify a checkbox field that will not allow the post if checked. Specify a message and/or an image for the post.
      Usage
      edit the desired PW page and save; it will post right after the initial Facebook log in and permission granting. After that, an access token is kept.
       
      Download
      PW module directory: http://modules.processwire.com/modules/auto-fb-post/ Github: https://github.com/kastrind/AutoFbPost   Note: Facebook SDK for PHP is utilized.


    • By kongondo
      FieldtypeRuntimeMarkup and InputfieldRuntimeMarkup
       
      Modules Directory: http://modules.processwire.com/modules/fieldtype-runtime-markup/
      GitHub: https://github.com/kongondo/FieldtypeRuntimeMarkup
      As of 11 May 2019 ProcessWire versions earlier than 3.x are not supported
      This module allows for custom markup to be dynamically (PHP) generated and output within a page's edit screen (in Admin).
       
      The value for the fieldtype is generated at runtime. No data is saved in the database. The accompanying InputfieldRuntimeMarkup is only used to render/display the markup in the page edit screen.
       
      The field's value is accessible from the ProcessWire API in the frontend like any other field, i.e. it has access to $page and $pages.
       
      The module was commissioned/sponsored by @Valan. Although there's certainly other ways to achieve what this module does, it offers a dynamic and flexible alternative to generating your own markup in a page's edit screen whilst also allowing access to that markup in the frontend. Thanks Valan!
       
      Warning/Consideration
      Although access to ProcessWire's Fields' admin pages is only available to Superusers, this Fieldtype will evaluate and run the custom PHP Code entered and saved in the field's settings (Details tab). Utmost care should therefore be taken in making sure your code does not perform any CRUD operations!! (unless of course that's intentional) The value for this fieldtype is generated at runtime and thus no data is stored in the database. This means that you cannot directly query a RuntimeMarkup field from $pages->find(). Usage and API
       
      Backend
      Enter your custom PHP snippet in the Details tab of your field (it is RECOMMENDED though that you use wireRenderFile() instead. See example below). Your code can be as simple or as complicated as you want as long as in the end you return a value that is not an array or an object or anything other than a string/integer.
       
      FieldtypeRuntimeMarkup has access to $page (the current page being edited/viewed) and $pages. 
       
      A very simple example.
      return 'Hello'; Simple example.
      return $page->title; Simple example with markup.
      return '<h2>' . $page->title . '</h2>'; Another simple example with markup.
      $out = '<h1>hello '; $out .= $page->title; $out .= '</h1>'; return $out; A more advanced example.
      $p = $pages->get('/about-us/')->child('sort=random'); return '<p>' . $p->title . '</p>'; An even more complex example.
      $str =''; if($page->name == 'about-us') { $p = $page->children->last(); $str = "<h2><a href='{$p->url}'>{$p->title}</a></h2>"; } else { $str = "<h2><a href='{$page->url}'>{$page->title}</a></h2>"; } return $str; Rather than type your code directly in the Details tab of the field, it is highly recommended that you placed all your code in an external file and call that file using the core wireRenderFile() method. Taking this approach means you will be able to edit your code in your favourite text editor. It also means you will be able to type more text without having to scroll. Editing the file is also easier than editing the field. To use this approach, simply do:
      return wireRenderFile('name-of-file');// file will be in /site/templates/ If using ProcessWire 3.x, you will need to use namespace as follows:
      return ProcessWire\wireRenderFile('name-of-file'); How to access the value of RuntimeMarkup in the frontend (our field is called 'runtime_markup')
       
      Access the field on the current page (just like any other field)
      echo $page->runtime_markup; Access the field on another page
      echo $pages->get('/about-us/')->runtime_markup; Screenshots
       
      Backend
       

       

       
      Frontend
       

×
×
  • Create New...