The announcement Mandrill Forcefully Requiring Mailchimp Accounts by laravel-news.com on February 25, 2016, might be of general interest to all users of Mandrill Email services.
It seems that Mandrill only grants a 60 days grace period for the transition to a Mailchimp account or to other providers, such as Amazon SES.
We might move to sendgrid
as it allows you to send using any domain. This works out well for our cloud, as people expect emails to be sent from their own email address and not notifications@example.com
.
Sadly, we might have to say goodbye to Mandrill Integration
Unless… Mandrill reverts its decision.
I’m working on SendGrid integration app. It will be based on Mandrill Integration and will provide same features for SendGrid. Hopefully, we will have working application by the end of this week.
That’s brilliant. Thanks a lot . That’s great timing.
great thanks …
… but wouldn’t it be helpful to make the code available right now while you’re still at it?
That might lead to other people (not me because I can’t write code) picking up on it and help to finish.
SendGrid Integration App is now available for everybody. It can do everything that Mandrill Integration does:
- uses event webhook to sync status of every sent message
- unsubscribes and cleans bounced, spammed, blocked and invalid emails from
corresponding lists with scheduled task
Feedback is appreciated.
Could this be integrated into the App Installer list?
I suppose yes, but I’m not exactly sure how to do that.
@anand: would you kindly have a look at @alex_melkoff 's SendGrid Integration App and let us know how to proceed from here?
I am getting this error on installing the app:
Installing sendgrid_integration...
Updating sendgrid_integration : [========================================]
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/aditya/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 79, in <module>
main()
File "/home/aditya/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 16, in main
click.Group(commands=commands)(prog_name='bench')
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 664, in __call__
return self.main(*args, **kwargs)
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 644, in main
rv = self.invoke(ctx)
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 837, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/aditya/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 464, in invoke
return callback(*args, **kwargs)
File "/home/aditya/frappe-bench/apps/frappe/frappe/commands.py", line 29, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File "/home/aditya/frappe-bench/apps/frappe/frappe/commands.py", line 163, in install_app
_install_app(app, verbose=context.verbose)
File "/home/aditya/frappe-bench/apps/frappe/frappe/installer.py", line 128, in install_app
add_to_installed_apps(name)
File "/home/aditya/frappe-bench/apps/frappe/frappe/installer.py", line 147, in add_to_installed_apps
post_install(rebuild_website)
File "/home/aditya/frappe-bench/apps/frappe/frappe/installer.py", line 206, in post_install
init_singles()
File "/home/aditya/frappe-bench/apps/frappe/frappe/installer.py", line 224, in init_singles
doc = frappe.new_doc(single)
File "/home/aditya/frappe-bench/apps/frappe/frappe/__init__.py", line 509, in new_doc
return get_new_doc(doctype, parent_doc, parentfield, as_dict=as_dict)
File "/home/aditya/frappe-bench/apps/frappe/frappe/model/create_new.py", line 19, in get_new_doc
frappe.local.new_doc_templates[doctype] = make_new_doc(doctype)
File "/home/aditya/frappe-bench/apps/frappe/frappe/model/create_new.py", line 37, in make_new_doc
"docstatus": 0
File "/home/aditya/frappe-bench/apps/frappe/frappe/__init__.py", line 533, in get_doc
return frappe.model.document.get_doc(arg1, arg2)
File "/home/aditya/frappe-bench/apps/frappe/frappe/model/document.py", line 44, in get_doc
controller = get_controller(doctype)
File "/home/aditya/frappe-bench/apps/frappe/frappe/model/base_document.py", line 30, in get_controller
module = load_doctype_module(doctype, module_name)
File "/home/aditya/frappe-bench/apps/frappe/frappe/modules/__init__.py", line 64, in load_doctype_module
doctype_python_modules[key] = frappe.get_module(get_module_name(doctype, module, prefix))
File "/home/aditya/frappe-bench/apps/frappe/frappe/__init__.py", line 598, in get_module
return importlib.import_module(modulename)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named upload.upload
Hello @adityaduggal! Please, provide the following information:
- ERPNext Version
- Frappe Version
- Bench Version
- What actions did you perform before this error occured
This is an error from frappe-bench installer according to traceback. Did you have any issues with app installations before on your instance?
Hi @alex_melkoff,
I think the app installed fine after the 1st attempt since it did not give any error but I think the sendgrid account is not setup properly as the webhook are not configured properly…infact I have not done any webhook setting in my sendgrid account and hence the communication status is not getting updated.