আমি কীভাবে দ্রুপালকে কোনও প্রকারের ইমেল প্রেরণ করা থেকে বিরত রাখতে পারি?


21

আমার একটি ডেভ, স্টেজিং এবং লাইভ সার্ভার ওয়ার্কফ্লো প্যানথিয়নে সেট আপ হয়েছে। আমার সাইটে প্রচুর বিধি রয়েছে যা বিভিন্ন কারণে সদস্যদের ই-মেইল করে। আমার ডেভ / স্টেজিং সাইটগুলিতে আমার মাঝে মাঝে এগুলি নিয়ে কাজ করা প্রয়োজন তবে আমি বুঝতে পেরেছি যেহেতু তাদের কাছে লাইভ ডেটা রয়েছে তাই ব্যবহারকারীরা যখন কোনও বিষয়ে কাজ করছেন তখন কখনও কখনও অতিরিক্ত বা সদৃশ ইমেলগুলি পাবেন will

কোনও ডেভ / স্টেজিং সার্ভারে সমস্ত ই-মেইলিং সক্ষমতা (অগ্রাধিকার স্বয়ংক্রিয়ভাবে আমাকে ভুলে যাওয়া রোধ করার জন্য) বন্ধ করার কোনও সহজ উপায় আছে কি? আদর্শভাবে, আমি একটি কাস্টম মডিউলটির মাধ্যমে ইমেলটি অক্ষম করতে চাই, যেহেতু ডেভ / স্টেজিংয়ে একটি কাস্টম মডিউল সক্ষম হয়েছে তা নিশ্চিত করার জন্য আমার ইতিমধ্যে পদক্ষেপ রয়েছে।


2
এখানে উত্তরগুলির কোনওটিই সন্তোষজনক নয়। সেটিংস.এফপি পরিবর্তন করার অর্থ এটি উত্পাদনে ধাক্কা পাবে। টেস্ট এবং দেব-এ একটি মডিউল ইনস্টল করার অর্থ আপনি যখন লাইভ থেকে ক্লোন করবেন তখন এটি ওভাররাইট হয়ে যাবে। কিছু প্রস্তাবিত কোড পরিবর্তন - গুরুত্ব সহকারে? একটি settings.local.php কাজ করবে কিন্তু উল্লেখ করা হয়নি। আমার স্থানীয় ডেভলপমেন্ট সাইটে একটি আছে তবে গিট ওয়ার্কফ্লো সহ এটি প্যানথিয়নের পরিবেশের জন্য ব্যবহারিক নয় কারণ সেখানে ফাইলটি পৌঁছে দেওয়ার বা আপডেট করার আগে আমাকে এসএফটিপিতে যেতে হবে। সুতরাং, হায়, নির্দোষ উত্পাদক ব্যবহারকারীরা মাঝে মধ্যে পরীক্ষার মাধ্যমে ইমেলগুলি অবিরত রাখবেন।
সিডননার

3
@ সিডননার হ্যাঁ, গুরুতর। আপনি যে নক-অন ইস্যুতে আত্মসমর্থন করেছেন সেগুলি সমাধান করার জন্য অনেকগুলি উপায় রয়েছে, সেগুলি খুব সহজ straight ব্যক্তিগতভাবে আমি git update-index --assume-unchanged sites/default/settings.phpসেটিংস.ফ্পকে বিভিন্ন পরিবেশের আশেপাশে ঠেকানো থেকে ব্যবহার করতে ব্যবহার করি । কিছু লোক কিছু শর্তযুক্ত যুক্তি পছন্দ করে যা পরিবেশের সেটিংস পরীক্ষা করে এবং পরিবেশের উপর ভিত্তি করে বিভিন্ন কনফ ফাইলগুলি অন্তর্ভুক্ত করে (যে কোনও ভাষাতে প্রতিটি অন্যান্য ওয়েব কাঠামোর অস্তিত্ব থাকে)। এখানে কেবল সীমাবদ্ধতা হ'ল একজনের কল্পনা, এটি বেসিক পিএইচপি / গিট স্টাফ, উত্তরে যুক্ত করার দরকার নেই
ক্লাইভ

1
আমি আপনার মতামত শ্রদ্ধা, ক্লাইভ। যদিও সমস্যাটি এখানে। আপনার যদি এমন একটি বড় সাইট থাকে যেখানে প্রচুর সংখ্যক ব্যবহারকারী পরীক্ষার পরিবেশ থেকে প্রচুর ইমেল পেতে পারেন যদি কোনও দলের সদস্য যদি চেক ইন করার আগে একটি অনুমান-অপরিবর্তিত গিট কল করতে ভুলে যায় তবে আমি দায়বদ্ধ ব্যক্তি হিসাবে এটি চাই না আপনার পদ্ধতির উপর নির্ভর করতে।
সিডননার

1
আপনি যদি পরিবর্তনটি বেছে নিতে চান তবে sites/default/settings.phpপরিবর্তে করুন git update-index --skip-worktree sites/default/settings.php। এর সাথে --assume-unchanged, আপনি সেটিংস.এফপিতে আপনার করা পরিবর্তনগুলি হারাবেন যদি আপনি একটি করেন git reset --hard। দেখুন stackoverflow.com/questions/13630849/...

আপনি কি .gitignore এ সেটিংস.এফপি রাখতে পারবেন না?
ইভান

উত্তর:


38

অন্য হিসাবে, দ্রুত, বিকল্প হিসাবে আপনি নীচের লাইনগুলি আপনার সাইটের সেটিংস.এফপি ফাইলে যুক্ত করতে পারেন (যদি আপনি ডেভেল মডিউল ইনস্টল করে থাকেন তবে এটি অবশ্যই কোনও ডেভ সাইট হলে অবশ্যই করা উচিত)।

$conf['mail_system'] = array(
  'default-system' => 'DevelMailLog',
);

এটি ডিভেলের বিকাশ মেল সিস্টেমের সাথে ডিফল্ট মেল সিস্টেমকে প্রতিস্থাপন করবে, যা কোনও প্রাপকের কাছে প্রেরণের পরিবর্তে কোনও ফাইল লগে ইমেল লেখায়। ডিফল্টরূপে ফাইলগুলি সংরক্ষণ করা হয় temporary://devel-mails, তবে আপনি এটির পরিবর্তে অন্য একটি ভেরিয়েবল স্থাপন করতে পারেন।

$conf['devel_debug_mail_directory'] = '/path/to/folder';

11

"সেইটির জন্য একটি মডিউল রয়েছে" তালিকায় অন্য একটি মডিউল যুক্ত করার জন্য কেবল একটি নোট:

পুনঃনির্মাণ ইমেলটি একটি দ্রুপাল সাইট থেকে সমস্ত বহির্গামী ইমেলগুলিকে বাধা দেয় এবং সেগুলি পূর্বনির্ধারিত কনফিগারযোগ্য ইমেল ঠিকানায় পুনরায় তৈরি করে।

আমি সম্মত হই যে এই কার্যকারিতাটি কয়েক লাইন কোডের সাথে সহজেই প্রয়োগ করা যেতে পারে, তবে এই মডিউলটি ব্যবহার করে আপনি পূর্বনির্ধারিত ঠিকানায় ইমেলগুলি গ্রহণ করতে পারবেন, মূল প্রাপক, সুন্দর কার্যকারিতা ইমোর বিবরণ সহ।


3
পুনরায় ইমেলটি আপনাকে আপনার হোস্টনামের উপর ভিত্তি করে সেটিংস সক্ষম / অক্ষম / পরিবর্তন করতে সেটিংস সক্ষম করতে বা আপনার সেটিংস.পিএইচপি ফাইলে কোড রাখতে দেয় (অথবা আপনি যদি কিছু বলতে চান তবে) (আপনার বিবরণটি ব্যবহার করতে চান), যাতে আপনি এটি স্বয়ংক্রিয়ভাবে উত্পাদনে এবং চালু করতে পারেন অন্য কোন মেশিন।
ডায়মন্ডিয়া

10

অথবা আপনি ড্রুপাল মেলগুলি পুনর্নির্দেশ করতে বা প্রতিরোধ করতে hook_mail_alter ব্যবহার করতে পারেন:

/**
* Implements hook_mail_alter
*/
function yourmodule_mail_alter(&$message) {
  // set 'To' field to nothing, so Drupal won’t have any address
  $message['to'] = ''; 
}

3
এটি মূলত সমস্ত মেল পুনঃনির্দেশই করে; পুরো নতুন মডিউলটি অন্তর্ভুক্ত করার চেয়ে এই কয়েকটি লাইনটি লেখার চেয়ে সম্ভবত আরও ভাল
ক্লাইভ

একটি ভাল ধারণা নয়, এটি এ জাতীয় কোড যা আপনার উত্স পরিবেশে স্নেক হয় যখন আপনি এটির git commit .বা অন্য কোনও অনুরূপ কিছু ভুলে যান ।
ডানকানমু

5

দ্রুপাল ৮

ড্রুপাল 8 এর জন্য, আপনি কনফিগারেশন সিস্টেমের মাধ্যমে ডেভেল মডিউল মেল হ্যান্ডলারটি চালু করতে পারেন।

drushএটি সঙ্গে হবে:

drush -y pm-enable devel
drush -y config-set system.mail interface.default devel_mail_log

2
আপনি এই পরিবেশ প্রতি এটি সেট করতে পারেন settings.local.php: $config['system.mail']['interface']['default'] = 'devel_mail_log';
প্যাট্রিক কেনি

লগ dir নির্দিষ্ট করতে তারপর এটি $config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
লেম্যানেক্স

4

আমি সাধারণত এই ক্ষেত্রে রিরোট ইমেল মডিউল ব্যবহার করি । এটি ডেভ থেকে নির্দিষ্ট ইমেলের সমস্ত ইমেল পুনরায় তৈরি করতে পারে। প্রেরিত ইমেলটি এই ইমেলটি কোথায় প্রেরণ করা উচিত তাও নির্দিষ্ট করে।


3

এটি ডেভেল ছাড়াই কাজ করবে এবং তিনটি পরিবেশেই নিরাপদ।

সেটিংস.এফপি-তে এটি যুক্ত করুন। এটি অনুলিপি করুন এবং পরিবেশটিকে testপরীক্ষার জন্য পরিবর্তন করুন ।

// Stop email on dev.
if (isset($_SERVER['PANTHEON_ENVIRONMENT']) &&
  $_SERVER['PANTHEON_ENVIRONMENT'] === 'dev') {
  // @see MYMODULE_mail_alter().
  $conf['development_environment'] = TRUE;
}

তারপরে মায়োডিউলে:

function MYMODULE_mail_alter(&$message) {
  if(variable_get('development_environment', FALSE)) {
    // First: Prevent the mail from being sent.
    $message['send'] = FALSE;

    // Next: Log the mail so it can be debugged if necessary
    watchdog('Development Env', 'The following email was not sent: !message', array('!message' => '<pre>' . print_r($message, TRUE) . '</pre>'));
  }
}

মেইল পরিবর্তনের ধারণার জন্য ক্রেডিট http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-de વિકાસment- পরিবেশে যায় ।


নোট করুন যে এটি অ্যাক্সেস বাইপাস দুর্বলতা হতে পারে। একটি পাসের রিসেট ইমেলের মাধ্যমে হ্যাশড পাস এবং রিসেট লিঙ্কটি ওয়াচডগের কাছে প্রেরণ করা হবে, উদাহরণের জন্য।
অলফয়ে

2

আমি মনে করি যে মেল পুনঃনির্দেশ মডিউলটি আপনার জন্য উপযুক্ত :)


এই মডিউলটি ব্যবহার করা কি এখনও মেল কার্যকারিতা পরীক্ষা করতে সক্ষম?
গুডএসপিএনডি 3

হ্যাঁ, কারণ সিস্টেমটি নির্বাচিত ইমেল ঠিকানায় ইমেল প্রেরণ করে
অ্যারুবিউ

2

https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7

<?php
/**
 * Implements hook_mail_alter().
 */
function mymodule_mail_alter(&$message) {
  $message['send'] = FALSE; 
}

এটি গৃহীত উত্তরের চেয়ে ভাল সমাধান। এটি কেবল একটি ডামি ঠিকানায় পুনরায় লেখার পরিবর্তে মেলকে পুরোপুরি পাঠানো বন্ধ করে দেয়, যার জন্য এখনও একটি প্রেরণ মেল প্রচেষ্টা দরকার।
ব্রায়ান জিনেঙ্ক

2

সুতরাং আপনার যদি ডেভ, মঞ্চায়ন ও উত্পাদনের জন্য নির্দিষ্ট কিছু থাকে তবে আপনি এটি আপনার সেটিংস.এফপি বা সেটিংস.লোকাল.এফপিতে রাখতে পারেন।

if(module_exists('devel')) {
  // Use Devel's maillog
  $conf['mail_system'] = array( 
    'default-system' => 'DevelMailLog',
  );
  // To set custom path 
  // $conf['devel_debug_mail_directory'] = '/path/to/folder';
} 
elseif (module_exists('mail_redirect')) {
  // Enable email rerouting.
  $conf['reroute_email_enable'] = 1;
  // Space, comma, or semicolon-delimited list of email addresses to pass
  // through. Every destination email address which is not on this list will be  
  // rerouted to the first address on the list.
  $conf['reroute_email_address'] = "example@example.com";
  // Enable inserting a message into the email body when the mail is being
  // rerouted.
  $conf['reroute_email_enable_message'] = 1;
}


1

সেট-আপ আপনার SMTP এর থেকে localhostএবং ইনস্টল MailCatcher ( GitHub ) যা কোনো বার্তা একটি ওয়েব ইন্টারফেসের মধ্যে প্রদর্শন করার জন্য এটি পাঠানো ক্যাচ।

স্থাপন

  1. gem install mailcatcher
  2. mailcatcher
  3. আপনার sendmail_pathপিএইচপি এ কনফিগার করুন :

    sendmail_path = /usr/bin/env catchmail -f some@from.address

    বা অ্যাপাচি কনফিগারেশনে :

    php_admin_value sendmail_path "/usr/bin/env catchmail -f some@from.address"
  4. যাও http://localhost:1080/

  5. এর মাধ্যমে মেইল ​​প্রেরণ করুন smtp://localhost:1025

ড্রাশে আপনি এগুলি করতে পারেন:

php -d sendmail_path="$(which catchmail)" drush.php some-command


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.