diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 2302272bf..c1e08d440 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -125,6 +125,9 @@ class MessagesController < ApplicationController @message.message_detail_attributes = {content: params[:content]} @message.save! Attachment.associate_container(params[:attachment_ids], @message.id, @message.class.name) + if @board.course.email_notify && params[:email_notify] + notify_course_students @message, @board.course + end rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) @@ -201,4 +204,10 @@ class MessagesController < ApplicationController def message_params params.require(:message).permit(:subject, :sticky) end + + def notify_course_students message, course + course.students.includes(:user).each do |student| + UserMailer.course_message_email(student&.user&.mail, message.id).deliver_now if student&.user&.mail + end + end end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 03ef63bb2..5cd9d787c 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -7,4 +7,11 @@ class UserMailer < ApplicationMailer @code = code mail(to: mail, subject: '验证你的电子邮件') end + + # 课堂讨论区的邮件通知 + def course_message_email(mail, message_id) + @message = Message.find_by(id: message_id) + @course = @message&.board&.course + mail(to: mail, subject: '课堂通知') if @message.present? && @course.present? + end end diff --git a/app/views/user_mailer/course_message_email.html.erb b/app/views/user_mailer/course_message_email.html.erb new file mode 100644 index 000000000..66c75414b --- /dev/null +++ b/app/views/user_mailer/course_message_email.html.erb @@ -0,0 +1,62 @@ + +
+ ++ 您好! +
++ 您正在注册Educoder,请在10分钟内在注册页输入此验证码,并进行下一步操作。 + 如非你本人操作,请忽略此邮件。 +
+<%= @code %>
++ 如果您并未发过此请求,则可能是因为其他用户在注册时误输了您的邮件地址,而使您收到了这封邮件,那么您可以放心的忽略此邮件,无需进一步采取任何操作。 +
+