本文整理汇总了Python中website.mails.send_mail函数的典型用法代码示例。如果您正苦于以下问题:Python send_mail函数的具体用法?Python send_mail怎么用?Python send_mail使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了send_mail函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _send_approval_request_email
def _send_approval_request_email(self, user, template, context):
mails.send_mail(
user.username,
template,
user=user,
**context
)
示例2: meeting_hook
def meeting_hook():
"""View function for email conference submission.
"""
message = ConferenceMessage()
try:
message.verify()
except ConferenceError as error:
logger.error(error)
raise HTTPError(httplib.NOT_ACCEPTABLE)
try:
conference = Conference.get_by_endpoint(message.conference_name, active=False)
except ConferenceError as error:
logger.error(error)
raise HTTPError(httplib.NOT_ACCEPTABLE)
if not conference.active:
send_mail(
message.sender_email,
CONFERENCE_INACTIVE,
fullname=message.sender_display,
presentations_url=web_url_for('conference_view', _absolute=True),
can_change_preferences=False,
logo=settings.OSF_MEETINGS_LOGO,
)
raise HTTPError(httplib.NOT_ACCEPTABLE)
add_poster_by_email(conference=conference, message=message)
示例3: send_claim_registered_email
def send_claim_registered_email(claimer, unreg_user, node, throttle=24 * 3600):
unclaimed_record = unreg_user.get_unclaimed_record(node._primary_key)
referrer = User.load(unclaimed_record['referrer_id'])
claim_url = web_url_for(
'claim_user_registered',
uid=unreg_user._primary_key,
pid=node._primary_key,
token=unclaimed_record['token'],
_external=True,
)
timestamp = unclaimed_record.get('last_sent')
if throttle_period_expired(timestamp, throttle):
# Send mail to referrer, telling them to forward verification link to claimer
mails.send_mail(
referrer.username,
mails.FORWARD_INVITE_REGiSTERED,
user=unreg_user,
referrer=referrer,
node=node,
claim_url=claim_url,
fullname=unclaimed_record['name'],
)
unclaimed_record['last_sent'] = get_timestamp()
unreg_user.save()
# Send mail to claimer, telling them to wait for referrer
mails.send_mail(
claimer.username,
mails.PENDING_VERIFICATION_REGISTERED,
fullname=claimer.fullname,
referrer=referrer,
node=node,
)
示例4: _send_global_and_node_emails
def _send_global_and_node_emails(send_type):
"""
Called by `send_users_email`. Send all global and node-related notification emails.
"""
grouped_emails = get_users_emails(send_type)
for group in grouped_emails:
user = OSFUser.load(group['user_id'])
if not user:
log_exception()
continue
info = group['info']
notification_ids = [message['_id'] for message in info]
sorted_messages = group_by_node(info)
if sorted_messages:
if not user.is_disabled:
# If there's only one node in digest we can show it's preferences link in the template.
notification_nodes = sorted_messages['children'].keys()
node = AbstractNode.load(notification_nodes[0]) if len(
notification_nodes) == 1 else None
mails.send_mail(
to_addr=user.username,
mimetype='html',
can_change_node_preferences=bool(node),
node=node,
mail=mails.DIGEST,
name=user.fullname,
message=sorted_messages,
)
remove_notifications(email_notification_ids=notification_ids)
示例5: send_confirm_email
def send_confirm_email(user, email):
"""Sends a confirmation email to `user` to a given email.
:raises: KeyError if user does not have a confirmation token for the given
email.
"""
confirmation_url = user.get_confirmation_url(
email,
external=True,
force=True,
)
try:
merge_target = User.find_one(Q('emails', 'eq', email))
except NoResultsFound:
merge_target = None
mails.send_mail(
email,
mails.CONFIRM_MERGE if merge_target else mails.CONFIRM_EMAIL,
'plain',
user=user,
confirmation_url=confirmation_url,
email=email,
merge_target=merge_target,
)
示例6: _send_preprint_confirmation
def _send_preprint_confirmation(self, auth):
# Send creator confirmation email
recipient = self.creator
event_type = utils.find_subscription_type('global_reviews')
user_subscriptions = get_user_subscriptions(recipient, event_type)
if self.provider._id == 'osf':
logo = settings.OSF_PREPRINTS_LOGO
else:
logo = self.provider._id
context = {
'domain': settings.DOMAIN,
'reviewable': self,
'workflow': self.provider.reviews_workflow,
'provider_url': '{domain}preprints/{provider_id}'.format(
domain=self.provider.domain or settings.DOMAIN,
provider_id=self.provider._id if not self.provider.domain else '').strip('/'),
'provider_contact_email': self.provider.email_contact or settings.OSF_CONTACT_EMAIL,
'provider_support_email': self.provider.email_support or settings.OSF_SUPPORT_EMAIL,
'no_future_emails': user_subscriptions['none'],
'is_creator': True,
'provider_name': 'OSF Preprints' if self.provider.name == 'Open Science Framework' else self.provider.name,
'logo': logo,
}
mails.send_mail(
recipient.username,
mails.REVIEWS_SUBMISSION_CONFIRMATION,
mimetype='html',
user=recipient,
**context
)
示例7: send_users_email
def send_users_email(send_type):
"""Find pending Emails and amalgamates them into a single Email.
:param send_type
:return:
"""
grouped_emails = get_users_emails(send_type)
if not grouped_emails:
return
for group in grouped_emails:
user = User.load(group["user_id"])
if not user:
log_exception()
continue
info = group["info"]
notification_ids = [message["_id"] for message in info]
sorted_messages = group_by_node(info)
if sorted_messages:
mails.send_mail(
to_addr=user.username,
mimetype="html",
mail=mails.DIGEST,
name=user.fullname,
message=sorted_messages,
callback=remove_notifications(email_notification_ids=notification_ids),
)
示例8: main
def main(send_email=False):
logger.info('Starting Project storage audit')
init_app(set_backends=True, routes=False)
lines = []
projects = {}
users = defaultdict(lambda: (0, 0))
for node in Node.find(Q('__backrefs.parent.node.nodes', 'eq', None)): # ODM hack to ignore all nodes with parents
if node._id in WHITE_LIST:
continue # Dont count whitelisted nodes against users
projects[node] = get_usage(node)
for contrib in node.contributors:
if node.can_edit(user=contrib):
users[contrib] = tuple(map(sum, zip(users[contrib], projects[node]))) # Adds tuples together, map(sum, zip((a, b), (c, d))) -> (a+c, b+d)
for collection, limit in ((users, USER_LIMIT), (projects, PROJECT_LIMIT)):
for item, (used, deleted) in filter(functools.partial(limit_filter, limit), collection.items()):
line = '{!r} has exceeded the limit {:.2f}GBs ({}b) with {:.2f}GBs ({}b) used and {:.2f}GBs ({}b) deleted.'.format(item, limit / GBs, limit, used / GBs, used, deleted / GBs, deleted)
logger.info(line)
lines.append(line)
if lines:
if send_email:
logger.info('Sending email...')
mails.send_mail('[email protected]', mails.EMPTY, body='\n'.join(lines), subject='Script: OsfStorage usage audit')
else:
logger.info('send_email is False, not sending email'.format(len(lines)))
logger.info('{} offending project(s) and user(s) found'.format(len(lines)))
else:
logger.info('No offending projects or users found')
示例9: send_users_email
def send_users_email(send_type):
"""Find pending Emails and amalgamates them into a single Email.
:param send_type
:return:
"""
grouped_emails = get_users_emails(send_type)
for group in grouped_emails:
user = OSFUser.load(group['user_id'])
if not user:
log_exception()
continue
info = group['info']
notification_ids = [message['_id'] for message in info]
sorted_messages = group_by_node(info)
if sorted_messages:
if not user.is_disabled:
mails.send_mail(
to_addr=user.username,
mimetype='html',
mail=mails.DIGEST,
name=user.fullname,
message=sorted_messages,
)
remove_notifications(email_notification_ids=notification_ids)
示例10: email_transactional
def email_transactional(recipient_ids, uid, event, user, node, timestamp, **context):
"""
:param recipient_ids: mod-odm User object ids
:param uid: id of the event owner (Node or User)
:param event: name of notification event (e.g. 'comments')
:param context: context variables for email template
See notify for specifics
:return:
"""
template = event + '.html.mako'
context['title'] = node.title
context['user'] = user
subject = Template(EMAIL_SUBJECT_MAP[event]).render(**context)
for user_id in recipient_ids:
recipient = website_models.User.load(user_id)
email = recipient.username
context['localized_timestamp'] = localize_timestamp(timestamp, recipient)
message = mails.render_message(template, **context)
if user._id != recipient._id:
mails.send_mail(
to_addr=email,
mail=mails.TRANSACTIONAL,
mimetype='html',
name=recipient.fullname,
node_id=node._id,
node_title=node.title,
subject=subject,
message=message,
url=get_settings_url(uid, recipient)
)
示例11: send_digest
def send_digest(grouped_digests):
""" Send digest emails and remove digests for sent messages in a callback.
:param grouped_digests: digest notification messages from the past 24 hours grouped by user
:return:
"""
for group in grouped_digests:
user = User.load(group['user_id'])
if not user:
sentry.log_exception()
sentry.log_message("A user with this username does not exist.")
return
info = group['info']
digest_notification_ids = [message['_id'] for message in info]
sorted_messages = group_messages_by_node(info)
if sorted_messages:
logger.info('Sending email digest to user {0!r}'.format(user))
mails.send_mail(
to_addr=user.username,
mimetype='html',
mail=mails.DIGEST,
name=user.fullname,
message=sorted_messages,
callback=remove_sent_digest_notifications.si(
digest_notification_ids=digest_notification_ids
)
)
示例12: main
def main(dry=True):
qs = PreprintService.objects.filter(
is_published=True,
node__is_deleted=False
).select_related('node').prefetch_related('node___contributors').order_by('pk')
count = qs.count()
pbar = progressbar.ProgressBar(maxval=count).start()
contributors_emailed = set()
logger.info('Sending emails to users for {} published preprints...'.format(count))
paginator = Paginator(qs, PAGE_SIZE)
n_processed = 0
for page_num in paginator.page_range:
page = paginator.page(page_num)
for preprint in page.object_list:
users = preprint.node.contributors.filter(is_active=True)
for user in users:
if user._id not in contributors_emailed:
if not dry:
mails.send_mail(
mail=mails.PREPRINT_DOI_CHANGE,
to_addr=user.username,
can_change_preferences=False,
user=user
)
contributors_emailed.add(user._id)
n_processed += len(page.object_list)
pbar.update(n_processed)
logger.info('Sent email to {} users from {} preprints'.format(len(contributors_emailed), count))
示例13: request_export
def request_export(auth):
mails.send_mail(
to_addr=settings.SUPPORT_EMAIL,
mail=mails.REQUEST_EXPORT,
user=auth.user,
)
return {'message': 'Sent account export request'}
示例14: request_deactivation
def request_deactivation(auth):
mails.send_mail(
to_addr=settings.SUPPORT_EMAIL,
mail=mails.REQUEST_DEACTIVATION,
user=auth.user,
)
return {'message': 'Sent account deactivation request'}
示例15: email_transactional
def email_transactional(subscribed_user_ids, uid, event, **context):
"""
:param subscribed_user_ids: mod-odm User object ids
:param uid: id of the event owner (Node or User)
:param event: name of notification event (e.g. 'comments')
:param context: context variables for email template
:return:
"""
template = event + '.html.mako'
subject = Template(EMAIL_SUBJECT_MAP[event]).render(**context)
for user_id in subscribed_user_ids:
user = website_models.User.load(user_id)
email = user.username
context['localized_timestamp'] = localize_timestamp(context.get('timestamp'), user)
message = mails.render_message(template, **context)
if context.get('commenter')._id != user._id:
mails.send_mail(
to_addr=email,
mail=mails.TRANSACTIONAL,
mimetype='html',
name=user.fullname,
node_id=context.get('node_id'),
node_title=context.get('title'),
subject=subject,
message=message,
url=get_settings_url(uid, user)
)